conv1d 一维卷积

tf.nn.conv1d(value,filters,stride,padding,use_cudnn_on_gpu=None,data_format=None,name=None
)
  • value的格式为:[batch, in_width, in_channels],batch为样本维,in_width为宽度维,表示样本的宽度,in_channels维通道维,表示样本有多少个通道,对应到本文输入[batch, sequence_length, hidden_size]
  • [filter_width, in_channels, out_channels] filter_width可以看作每次与value进行卷积的行数,in_channels表示value一共有多少列(与value中的in_channels相对应)。out_channels表示输出通道,可以理解为一共有多少个卷积核,即卷积核的数目。
  • stride:一个整数,表示步长,每次(向下)移动的距离。
  • padding:‘SAME’或’VALID’
  • use_cudnn_on_gpu:可选的bool,默认为True。
  • data_format:一个可选的string,可以是"NWC"和"NCW";默认为"NWC",数据按[batch,in_width,in_channels]的顺序存储;"NCW"格式将数据存储为[batch, in_channels, in_width]。
  • name:操作的名称(可选)。

我们来理解一下怎么运算的
一个conv2d [128,128,3] 卷积核[3,3,64] ==> [128,128,64] 计算改变了通道数,实际上是每一个通道的卷积核与输入所有通道做计算。
类比一下 conv1d 卷积核变为1维 也就是filter_width,每一个新通道与旧的所有通道相乘,然后多个卷积核相加,实际上是一个矩阵相乘,旧通道为行乘新通道列,看做两个矩阵运算就得出了所有的旧通道*所有的新通道。矩阵运算完再做卷积核的运算应该会简洁很多。

看个例子:

import keras
import keras.backend as Kx = K.variable([[[0.5,0.5,0.5], [1.0,1.0,1.0], [1.5,1.5,1.5], [2.0,2.0,2.0], [2.5,2.5,2.5]]])  # (1,5,3)
# 卷积核大小3  输出通道5
cnn = keras.layers.Conv1D(5, 3, activation='relu', padding='same', kernel_initializer=keras.initializers.Ones(), bias_initializer=keras.initializers.Zeros())(x)
print(K.eval(cnn)) # shape: (1, 5, 5)# (1*0.5+1*0.5+1*0.5)*3 3:通道
array([[[ 4.5,  4.5,  4.5,  4.5,  4.5],[ 9. ,  9. ,  9. ,  9. ,  9. ],[13.5, 13.5, 13.5, 13.5, 13.5],[18. , 18. , 18. , 18. , 18. ],[13.5, 13.5, 13.5, 13.5, 13.5]]], dtype=float32)

TensorFlow函数:tf.nn.conv1d

tf.nn.conv1d相关推荐

  1. 通俗理解tf.nn.conv2d() tf.nn.conv3d( )参数的含义 pytorhc 卷积

    20210609 例如(3,3,(3,7,7))表示的是输入图像的通道数是3,输出图像的通道数是3,(3,7,7)表示过滤器每次处理3帧图像,卷积核的大小是3 x 7 x 7. https://blo ...

  2. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍 关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional networ ...

  3. 【TensorFlow】理解tf.nn.conv2d方法 ( 附代码详解注释 )

    最近在研究学习TensorFlow,在做识别手写数字的demo时,遇到了tf.nn.conv2d这个方法,查阅了官网的API 发现讲得比较简略,还是没理解.google了一下,参考了网上一些朋友写得博 ...

  4. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...

  5. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  6. tf.nn.relu

    tf.nn.relu(features, name = None) 这个函数的作用是计算激活函数 relu,即 max(features, 0).即将矩阵中每行的非最大值置0. import tens ...

  7. tf.nn.l2_loss() 与 权重衰减(weight decay)

    权重衰减(weight decay)   L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化.   L2正则化就是在代价函数后面再加上一个正则化 ...

  8. tf.nn.max_pool 理解

    tf.nn.max_pool(value, ksize, strides, padding, name=None) 参数是四个,和卷积很类似: 参数value:需要池化的输入,一般池化层接在卷积层后面 ...

  9. 【pytorch】nn.conv1d的使用

    官方文档在这里. conv1d具体不做介绍了,本篇只做pytorch的API使用介绍. torch.nn.Conv1d(in_channels, out_channels, kernel_size, ...

最新文章

  1. 文件查找命令find的使用
  2. Mac如何安装并永久激活PyCharm以及IntelliJ IDEA
  3. swift_026(Swift 的类型转换)
  4. linux ssh密钥认证
  5. 螃蟹wifi驱动在AP模式下存在挂死系统的问题
  6. DBD::mysql::db do failed: Table cl_access was locked with a READ lock and can't be updated
  7. C# 函数 传入 C++动态库中 做回调函数
  8. 据说网易搜索引擎-超越GOOGLE
  9. 深度学习(图像处理)代码库
  10. 2020山东省计算机专科学校排名,2021山东专科学校排名 最好的高职院校排行榜
  11. jquery扩展与插件
  12. Kafka 居然还会丢消息?
  13. python删除过期文件_python 删除过期文件的方法+源码
  14. 除了快,5G 有哪些关键技术?
  15. 14 ABSOLUTE评估肿瘤纯度
  16. BEGAN(Boundary Equilibrium GenerativeAdversarial Networks)-pyTorch实现
  17. 【安全资讯】2021年值得关注的10大网络安全工具
  18. mac vscode改变字体
  19. vscode中converting to execution character set: Illegal byte sequence
  20. 【CCF】公共钥匙盒

热门文章

  1. 我与CSDN的这十年——笔耕不辍,青春热血
  2. 债市下跌是股票的错?
  3. 2021年中国债券行业发展趋势分析:发行规模、交易量增长,未来发展潜力较大[图]
  4. htc+820+android+5.0,htc 820s和htc one m8哪个好?两者有什么区别?
  5. 基于北向资金指数择时策略验证与思考
  6. android 4.4 电池电量管理底层分析(C\C++层)
  7. 多维度数据分析是什么?该怎么做?
  8. 您如何用leetcode进行面试很不好
  9. HDU 2188 经典巴什博弈
  10. 三极管NPN在开关电路中的应用