tensorflow之神經網路層:AveragePooling1D、average_pooling1d、Conv1D和conv1d
1.tf.layers.AveragePooling1D
Class AveragePooling1D:對一維的輸入作平均池化
引數:
- pool_size:一個整數或者一個單個整數的tuple/list,表示池化視窗的大小
- Strides:一個整數或者一個單個整數的tuple/list,指定池化操作的移動步幅
- padding:一個字串。padding的方法:”valid”或者’same’
- data_format:一個字串,channels_last(預設)或channels_first中的一個,輸入中維度的排序,channels_last對應於具有形狀(batch, length, channels)的輸入,而channels_first對應於具有形狀(batch, channels, length)的輸入。
- 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)