基于Tensorflow一维卷积用法详解


Posted in Python onMay 22, 2020

我就废话不多说了,大家还是直接看代码吧!

import tensorflow as tf
import numpy as np
input = tf.constant(1,shape=(64,10,1),dtype=tf.float32,name='input')#shape=(batch,in_width,in_channels)
w = tf.constant(3,shape=(3,1,32),dtype=tf.float32,name='w')#shape=(filter_width,in_channels,out_channels)
conv1 = tf.nn.conv1d(input,w,2,'VALID') #2为步长
print(conv1.shape)#宽度计算(width-kernel_size+1)/strides ,(10-3+1)/2=4 (64,4,32)
conv2 = tf.nn.conv1d(input,w,2,'SAME') #步长为2
print(conv2.shape)#宽度计算width/strides 10/2=5 (64,5,32)
conv3 = tf.nn.conv1d(input,w,1,'SAME') #步长为1
print(conv3.shape) # (64,10,32)
with tf.Session() as sess:
 print(sess.run(conv1))
 print(sess.run(conv2))
 print(sess.run(conv3))

基于Tensorflow一维卷积用法详解

以下是input_shape=(1,10,1), w = (3,1,1)时,conv1的shape

基于Tensorflow一维卷积用法详解

以下是input_shape=(1,10,1), w = (3,1,3)时,conv1的shape

基于Tensorflow一维卷积用法详解

补充知识:tensorflow中一维卷积conv1d处理语言序列举例

tf.nn.conv1d:

函数形式: tf.nn.conv1d(value, filters, stride, padding, use_cudnn_on_gpu=None, data_format=None, name=None):

程序举例:

import tensorflow as tf
import numpy as np
sess = tf.InteractiveSession()
 
# --------------- tf.nn.conv1d -------------------
inputs=tf.ones((64,10,3)) # [batch, n_sqs, embedsize]
w=tf.constant(1,tf.float32,(5,3,32)) # [w_high, embedsize, n_filers]
conv1 = tf.nn.conv1d(inputs,w,stride=2 ,padding='SAME') # conv1=[batch, round(n_sqs/stride), n_filers],stride是步长。
 
tf.global_variables_initializer().run()
out = sess.run(conv1)
print(out)

注:一维卷积中padding='SAME'只在输入的末尾填充0

tf.layters.conv1d:

函数形式:tf.layters.conv1d(inputs, filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=1, activation=None, use_bias=True,...)

程序举例:

import tensorflow as tf
import numpy as np
sess = tf.InteractiveSession()
 
# --------------- tf.layters.conv1d -------------------
inputs=tf.ones((64,10,3)) # [batch, n_sqs, embedsize]
num_filters=32
kernel_size =5
conv2 = tf.layers.conv1d(inputs, num_filters, kernel_size,strides=2, padding='valid',name='conv2') # shape = (batchsize, round(n_sqs/strides),num_filters)
tf.global_variables_initializer().run()
out = sess.run(conv2)
print(out)

二维卷积实现一维卷积:

import tensorflow as tf
sess = tf.InteractiveSession()
def conv2d(x, W):
 return tf.nn.conv2d(x, W, strides=[1,1,1,1], padding='SAME')
def max_pool_1x2(x):
 return tf.nn.avg_pool(x, ksize=[1,1,2,1], strides=[1,1,2,1], padding='SAME')
'''
ksize = [x, pool_height, pool_width, x]
strides = [x, pool_height, pool_width, x]
'''
 
x = tf.Variable([[1,2,3,4]], dtype=tf.float32)
x = tf.reshape(x, [1,1,4,1]) #这一步必不可少,否则会报错说维度不一致;
'''
[batch, in_height, in_width, in_channels] = [1,1,4,1]
'''
 
W_conv1 = tf.Variable([1,1,1],dtype=tf.float32) # 权重值
W_conv1 = tf.reshape(W_conv1, [1,3,1,1]) # 这一步同样必不可少
'''
[filter_height, filter_width, in_channels, out_channels]
'''
h_conv1 = conv2d(x, W_conv1) # 结果:[4,8,12,11]
h_pool1 = max_pool_1x2(h_conv1)
tf.global_variables_initializer().run()
print(sess.run(h_conv1)) # 结果array([6,11.5])x

两种池化操作:

# 1:stride max pooling
convs = tf.expand_dims(conv, axis=-1) # shape=[?,596,256,1]
smp = tf.nn.max_pool(value=convs, ksize=[1, 3, self.config.num_filters, 1], strides=[1, 3, 1, 1],
     padding='SAME') # shape=[?,299,256,1]
smp = tf.squeeze(smp, -1) # shape=[?,299,256]
smp = tf.reshape(smp, shape=(-1, 199 * self.config.num_filters))
 
# 2: global max pooling layer
gmp = tf.reduce_max(conv, reduction_indices=[1], name='gmp')

不同核尺寸卷积操作:

kernel_sizes = [3,4,5] # 分别用窗口大小为3/4/5的卷积核
with tf.name_scope("mul_cnn"):
 pooled_outputs = []
 for kernel_size in kernel_sizes:
  # CNN layer
  conv = tf.layers.conv1d(embedding_inputs, self.config.num_filters, kernel_size, name='conv-%s' % kernel_size)
  # global max pooling layer
  gmp = tf.reduce_max(conv, reduction_indices=[1], name='gmp')
  pooled_outputs.append(gmp)
 self.h_pool = tf.concat(pooled_outputs, 1) #池化后进行拼接

以上这篇基于Tensorflow一维卷积用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的高级函数map/reduce使用实例
Apr 13 Python
Python调用C++程序的方法详解
Jan 24 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
对Python中数组的几种使用方法总结
Jun 28 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
django如何通过类视图使用装饰器
Jul 24 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
python 递归相关知识总结
Mar 03 Python
python保存图片的四个常用方法
Feb 28 Python
Python OpenCV实现图像模板匹配详解
Apr 07 Python
Python参数传递机制传值和传引用原理详解
May 22 #Python
python filecmp.dircmp实现递归比对两个目录的方法
May 22 #Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 #Python
Python参数传递对象的引用原理解析
May 22 #Python
Python configparser模块常用方法解析
May 22 #Python
keras中的卷积层&池化层的用法
May 22 #Python
Keras Convolution1D与Convolution2D区别说明
May 22 #Python
You might like
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
php绘制一条弧线的方法
2015/01/24 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python简单的制作图片验证码实例
2017/05/31 Python
python导入模块交叉引用的方法
2019/01/19 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
Linux文件系统类型
2012/02/15 面试题
千元咖啡店的创业计划书范文
2013/12/29 职场文书
美化环境标语
2014/06/20 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
营业员岗位职责范本
2015/04/14 职场文书
跑出一片天观后感
2015/06/08 职场文书
爱的教育读书笔记
2015/06/26 职场文书
党校团干班培训心得体会
2016/01/06 职场文书