tensorflow之神经网络层:AveragePooling1D、average_pooling1d、Conv1D和conv1d

1.tf.layers.AveragePooling1D

Class AveragePooling1D:对一维的输入作平均池化

参数:

  1. pool_size:一个整数或者一个单个整数的tuple/list,表示池化窗口的大小
  2. Strides:一个整数或者一个单个整数的tuple/list,指定池化操作的移动步幅
  3. padding:一个字符串。padding的方法:”valid”或者’same’
  4. data_format:一个字符串,channels_last(默认)或channels_first中的一个,输入中维度的排序,channels_last对应于具有形状(batch, length, channels)的输入,而channels_first对应于具有形状(batch, channels, length)的输入。
  5. Name:一个字符串,表示层的名称。

代码示例:

import tensorflow as tf

x=tf.Variable(tf.random_normal([2,10,1])) #2表示batch_size,10表示输入向量长度,1表示输入的channel数量

init=tf.global_variables_initializer()

average_pool=tf.layers.AveragePooling1D(pool_size=2,strides=2,padding='SAME',activity_regularizer=tf.nn.l2_normalize)

y=average_pool(x)

print(y.shape) #(2, 5, 1)

print(average_pool.activity_regularizer) #<function l2_normalize at 0x000001F04CA3B730>

print(average_pool.dtype) #float32

print(average_pool.data_format) #channels_last

with tf.Session() as sess:

    sess.run(init)

    print(sess.run(y))

    print(sess.run(x))

2.tf.layers.average_pooling1d

作用跟AveragePooling1D类一样。

tf.layers.average_pooling1d(

    inputs,

    pool_size,

    strides,

    padding='valid',

    data_format='channels_last',

    name=None

)

x=tf.Variable(tf.random_normal([2,10,1]))

x_average_pool=tf.layers.average_pooling1d(x,pool_size=2,padding="SAME",strides=2)

print(x_average_pool.shape)(2, 5, 1)

3.tf.layers.Conv1D

Class Conv1D:一维的卷积层,如时间卷积

该层创建一个卷积核,卷积核与层输入进行卷积(实际上是交叉相关)以产生输出张量。如果use_bias为True(并且提供了bias_initializer),则会创建偏置向量并将其添加到输出。最后,如果激活函数不为None,它也会作用于输出。

参数:

filters:整数,输出空间的维度。例如,卷积中卷积核的数量。

Kernel_size:一个整数或一个单个整数的tuple/list,指定一维卷积窗口的长度

Strides:一个整数或一个单个整数的tuple/list,指定卷积的步幅。指定任何!=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:一个整数或一个单个整数的tuple/list,指定用于扩张的卷积的扩张率。指定任何!=1的步幅值与指定任何dilation_rate值!=1不相容

activation:激活函数,将其设置为None则是线性函数

use_bias:Boolean,表示是否使用偏置

kernel_initializer:卷积核的初始化器

bias_initializer:偏置向量的初始化器,如果为None,则使用默认的初始化器

kernel_regularizer:用于卷积核的可选正则化器。

bias_regularizer:用于偏置向量的可选正则化器。

activity_regularizer:用于输出的可选正则化函数

kernel_constraint:在由优化器更新之后应用于内核的可选投影函数(例如,用于实现层权重的范数约束或值约束)。 该函数必须将未投影的变量作为输入,并且必须返回投影变量(必须具有相同的形状)。 在进行异步分布式训练时,使用约束是不安全的。

bias_constraint:可选的投影功能,在优化器进行更新后应用于偏差。

trainable:Boolean,如果为Ture将变量添加到图集合GraphKeys.TRAINABLE_VARIABLES中。

 

代码示例:

import tensorflow as tf

x=tf.Variable(tf.random_normal([2,10,1])) #2表示batch_size,10表示输入向量长度,1表示输入的channel数量

conv1D=tf.layers.Conv1D(10,kernel_size=2,strides=1,padding="SAME")#输出10个filters

print(conv1D(x))

conv1D=tf.layers.Conv1D(10,kernel_size=2,strides=1)

print(conv1D(x))

输出:

Tensor("conv1d_10/BiasAdd:0", shape=(2, 10, 10), dtype=float32)

Tensor("conv1d_11/BiasAdd:0", shape=(2, 9, 10), dtype=float32)

4.tf.layers.conv1d

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

)

参数说明:

name:层的名称。

reuse:Boolean,是否以同一名称重用前一层的权重。

其它参数同Conv1D类。

conv1D=tf.layers.conv1d(x,filters=10,kernel_size=2,strides=1,padding="SAME")

print(conv1D)

conv1D=tf.layers.conv1d(x,filters=10,kernel_size=2,strides=1)

print(conv1D)

输出:

Tensor("conv1d_15/BiasAdd:0", shape=(2, 10, 10), dtype=float32)

Tensor("conv1d_16/BiasAdd:0", shape=(2, 9, 10), dtype=float32)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值