tf.nn.conv1d
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相关推荐
- 通俗理解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 ...
- 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积
介绍 关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional networ ...
- 【TensorFlow】理解tf.nn.conv2d方法 ( 附代码详解注释 )
最近在研究学习TensorFlow,在做识别手写数字的demo时,遇到了tf.nn.conv2d这个方法,查阅了官网的API 发现讲得比较简略,还是没理解.google了一下,参考了网上一些朋友写得博 ...
- tf.nn.embedding_lookup()的用法
函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...
- 深度学习原理与框架-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] 代码说 ...
- tf.nn.relu
tf.nn.relu(features, name = None) 这个函数的作用是计算激活函数 relu,即 max(features, 0).即将矩阵中每行的非最大值置0. import tens ...
- tf.nn.l2_loss() 与 权重衰减(weight decay)
权重衰减(weight decay) L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化. L2正则化就是在代价函数后面再加上一个正则化 ...
- tf.nn.max_pool 理解
tf.nn.max_pool(value, ksize, strides, padding, name=None) 参数是四个,和卷积很类似: 参数value:需要池化的输入,一般池化层接在卷积层后面 ...
- 【pytorch】nn.conv1d的使用
官方文档在这里. conv1d具体不做介绍了,本篇只做pytorch的API使用介绍. torch.nn.Conv1d(in_channels, out_channels, kernel_size, ...
最新文章
- 文件查找命令find的使用
- Mac如何安装并永久激活PyCharm以及IntelliJ IDEA
- swift_026(Swift 的类型转换)
- linux ssh密钥认证
- 螃蟹wifi驱动在AP模式下存在挂死系统的问题
- DBD::mysql::db do failed: Table cl_access was locked with a READ lock and can't be updated
- C# 函数 传入 C++动态库中 做回调函数
- 据说网易搜索引擎-超越GOOGLE
- 深度学习(图像处理)代码库
- 2020山东省计算机专科学校排名,2021山东专科学校排名 最好的高职院校排行榜
- jquery扩展与插件
- Kafka 居然还会丢消息?
- python删除过期文件_python 删除过期文件的方法+源码
- 除了快,5G 有哪些关键技术?
- 14 ABSOLUTE评估肿瘤纯度
- BEGAN(Boundary Equilibrium GenerativeAdversarial Networks)-pyTorch实现
- 【安全资讯】2021年值得关注的10大网络安全工具
- mac vscode改变字体
- vscode中converting to execution character set: Illegal byte sequence
- 【CCF】公共钥匙盒
热门文章
- 我与CSDN的这十年——笔耕不辍,青春热血
- 债市下跌是股票的错?
- 2021年中国债券行业发展趋势分析:发行规模、交易量增长,未来发展潜力较大[图]
- htc+820+android+5.0,htc 820s和htc one m8哪个好?两者有什么区别?
- 基于北向资金指数择时策略验证与思考
- android 4.4 电池电量管理底层分析(C\C++层)
- 多维度数据分析是什么?该怎么做?
- 您如何用leetcode进行面试很不好
- HDU 2188 经典巴什博弈
- 三极管NPN在开关电路中的应用