• tf.nn.conv1d


    一、conv1d
      在NLP领域,甚至图像处理的时候,我们可能会用到一维卷积(conv1d)。所谓的一维卷积可以看作是二维卷积(conv2d)的简化,二维卷积是将一个特征图在width和height两个方向上进行滑窗操作,对应位置进行相乘并求和;而一维卷积则是只在width或者说height方向上进行滑窗并相乘求和。

    tensorflow中的conv1d和conv2d的区别:conv1d是单通道的,conv2d是多通道,所以conv1d适合处理文本序列,conv2d适合处理图像

    二、详解
      conv1d的参数含义:(以NHWC格式为例,即,通道维在最后)

    1、value:在注释中,value的格式为:[batch, in_width, in_channels],batch为样本维,表示多少个样本,in_width为宽度维,表示样本的宽度,in_channels维通道维,表示样本有多少个通道。
      事实上,也可以把格式看作如下:[batch, 行数, 列数],把每一个样本看作一个平铺开的二维数组。这样的话可以方便理解。

    2、filters:在注释中,filters的格式为:[filter_width, in_channels, out_channels]。按照value的第二种看法,filter_width可以看作每次与value进行卷积的行数,in_channels表示value一共有多少列(与value中的in_channels相对应)。out_channels表示输出通道,可以理解为一共有多少个卷积核,即卷积核的数目。

    3、stride:一个整数,表示步长,每次(向下)移动的距离(TensorFlow中解释是向右移动的距离,这里可以看作向下移动的距离)。

    4、padding:同conv2d,value是否需要在下方填补0。

    5、name:名称。可省略。

    # tensorflow2.1.0+win10
    import tensorflow.compat.v1 as tf
    tf.disable_v2_behavior()
    import numpy as np
    
    # 定义一个矩阵a,表示需要被卷积的矩阵。[batch, 行数, 列数],把每一个样本看作一个平铺开的二维数组。
    # 在注释中,value的格式为:[batch, in_width, in_channels],batch为样本维,表示多少个样本,in_width为宽度维,表示样本的宽度,in_channels维通道维,表示样本有多少个通道。
    # 事实上,也可以把格式看作如下:[batch, 行数, 列数],把每一个样本看作一个平铺开的二维数组。这样的话可以方便理解。
    a = np.array(np.arange(1, 1 + 20).reshape([1, 10, 2]), dtype=np.float32)
    
    # 卷积核,此处卷积核的数目为1,filters:在注释中,filters的格式为:[filter_width, in_channels, out_channels]。
    # 按照value的第二种看法,filter_width可以看作每次与value进行卷积的行数,in_channels表示value一共有多少列(与value中的in_channels相对应)。
    # out_channels表示输出通道,可以理解为一共有多少个卷积核,即卷积核的数目。
    kernel = np.array(np.arange(1, 1 + 4), dtype=np.float32).reshape([2, 2, 1])
    
    # 进行conv1d卷积
    conv1d = tf.nn.conv1d(a, kernel, 1, 'VALID')
    
    with tf.Session() as sess:
        # 初始化
        sess.run(tf.global_variables_initializer())
        print(sess.run(conv1d))
    

     输出:

     

     

    卷积层输出维度计算:

    outlength = 向上取整((inlength-filterlength+1)/ stridelength

     10-2+1/1=9,卷积的输出维度是9

    参考:

    https://blog.csdn.net/u013337743/article/details/87923618

    https://blog.csdn.net/DaVinciL/article/details/81359245

  • 相关阅读:
    一个强大的LogParser的UI工具logparserlizard简介
    Spring.NET 1.3.2 集成 NHibernate 3.2 3 监控及日志
    Spring.NET 1.3.2 集成 NHibernate 3.2 5 事务管理
    id 的选择器为什么要这么写 li#first?
    学习《Microsoft SQL Server 2008 技术内幕:TSQL 语言基础 》之一:学习资料、数据库、数据库脚本准备
    mybatisnet 1 获取 mybatisnet
    MusicStore 项目的完整配套视频!
    Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件
    Spring.NET 1.3.2 集成 NHibernate 3.2 4 实现基本的数据访问
    Spring.NET 1.3.2 集成 NHibernate 3.2 2 配置使用 Spring.NET 的网站
  • 原文地址:https://www.cnblogs.com/GumpYan/p/13523511.html
Copyright © 2020-2023  润新知