基于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将动态GIF图片倒放播放的方法
Nov 02 Python
Python面向对象特殊成员
Apr 24 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
对python中UDP,socket的使用详解
Aug 22 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
Python模块future用法原理详解
Jan 20 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Python Django view 两种return的实现方式
Mar 16 Python
python实现经典排序算法的示例代码
Feb 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
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
PHP实现文件下载详解
2014/11/27 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
python实现删除文件与目录的方法
2014/11/10 Python
Python打印斐波拉契数列实例
2015/07/07 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
NET程序员上机面试题
2015/05/23 面试题
养殖人员的创业计划书范文
2013/12/26 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
浅谈MySQL user权限表
2021/06/18 MySQL