【tensorflow】tf.layers.conv1d函数解析(一维卷积)

TensorFlow函数:tf.layers.Conv1D_w3cschool https://www.w3cschool.cn/tensorflow_python/tensorflow_python-283f2t0b.html

功能
1D卷积层(例如,时间卷积).
一维卷积一般用于处理文本数据,常用语自然语言处理中
定义:

tf.layers.conv1d(
			inputs,
			filters,
			kernel_size,
			strides=1,
			padding='valid',
			data_format='channels_last',
			dilation_rate=1,
			activation=None,
			use_bias=True,
			kernel_initializer=None,
			bias_initializer=tf.zeros_initializer(),
			kernel_regularizer=None,
			bias_regularizer=None,
			activity_regularizer=None,
			kernel_constraint=None,
			bias_constraint=None,
			trainable=True,
			name=None,
			reuse=None
)

参数:

  • filters:整数,输出空间的维数(即卷积中的滤波器数).
  • kernel_size:单个整数的整数或元组/列表,指定1D卷积窗口的长度.
  • strides:单个整数的整数或元组/列表,指定卷积的步幅.指定任何步幅(stride)值!=1与指定任何dilation_rate值都不相容!= 1.
  • padding:一个"valid"或"same"(不区分大小写).
  • data_format:一个字符串,可以是channels_last(默认)或channels_first;输入中维度的顺序;channels_last对应于具有形状(batch, length, channels)的输入,而channels_first对应于具有形状(batch, channels,length)的输入.
  • dilation_rate:单个整数的整数或元组/列表,指定用于扩张卷积的扩张率.目前,指定任何dilation_rate值!=1与指定任何strides值!= 1 不兼容.
  • activation:激活功能,将其设置为“None”以保持线性激活.
  • use_bias:Boolean,该层是否使用偏差.
  • kernel_initializer:卷积内核的初始化程序.
  • bias_initializer:偏置向量的初始化器,如果为None,将使用默认初始值设定项.
  • kernel_regularizer:卷积内核的可选正则化器.
  • bias_regularizer:偏置矢量的可选正则化器.
  • activity_regularizer:输出的可选正则化函数.
  • kernel_constraint:由Optimizer更新后应用于内核的可选投影函数(例如,用于实现层权重的范数约束或值约束);该函数必须将未投影的变量作为输入,并且必须返回投影变量(必须具有相同的形状);在进行异步分布式培训时,使用约束是不安全的.
  • bias_constraint:由Optimizer更新后应用于偏差的可选投影函数.
  • trainable:Boolean,如果为True,还将变量添加到图集合
  • GraphKeys.TRAINABLE_VARIABLES中(请参阅参考资料tf.Variable).
  • name:字符串,图层的名称.

————————————————
版权声明:下面例子为CSDN博主「生活不只*眼前的苟且」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011734144/article/details/84066928

比较重要的几个参数是inputs, filters, kernel_size,下面分别说明:

  1. inputs : 输入tensor, 维度(None, a, b) 是一个三维的tensor
  • None : 一般是填充样本的个数,batch_size
  • a : 句子中的词数或者字数
  • b : 字或者词的向量维度
  1. filters : 过滤器的个数

  2. kernel_size : 卷积核的大小,卷积核其实应该是一个二维的,这里只需要指定一维,是因为卷积核的第二维与输入的词向量维度是一致的,因为对于句子而言,卷积的移动方向只能是沿着词的方向,即只能在列维度移动

一个例子

inputs = tf.placeholder(‘float’, shape=[None, 6, 8])
out = tf.layers.conv1d(inputs, 5, 3)

说明: 对于一个样本而言,句子长度为6个字,字向量的维度为8

filters=5, kernel_size=3, 所以卷积核的维度为3* 8

那么输入6 * 8经过3* 8的卷积核卷积后得到的是4*1的一个向量,其中(4=6-3+1)

又因为有5个过滤器,所以是得到5个4* 1的向量
画图如下:
【tensorflow】tf.layers.conv1d函数解析(一维卷积)_第1张图片

你可能感兴趣的:(深度学习,tensorflow)