Python TensorFlow – ``tf.keras.layers.Conv1DTranspose()`` 函数详解与实例


发布日期 : 2019-12-20 17:24:54 UTC

访问量: 10 次浏览

Python Tensorflow – tf.keras.layer.Conv1DTranspose() 函数

tf.keras.layer.Conv1DTranspose() 函数用于在数据上应用转置的一维卷积操作,也被称为去卷积。

语法:

tf.keras.layers.Conv1DTranspose( filters, kernel_size, strides=1, padding=’valid’, output_padding=None, data_format=None, dilation_rate=1, activation=None, use_bias=True, kernel_initializer=’glorot_uniform’, bias_initializer=’zeros’, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, **kwargs)

输入形状:
一个三维张量的形状:( batch\_size,步骤,通道)。

输出形状:
一个形状的三维张量:(batch\_size, new\_steps , filters )。

参数:

  • filters(整数):输出空间的维度(即卷积中输出滤波器的数量)。
  • kernel\_size(整数):一维卷积窗口的整数长度。
  • strides :沿着时间维度的卷积的步幅。
  • padding(填充)。:填充模式。
  • output\_padding :
  • data\_format :数据格式。这指定了输入中各尺寸的顺序。 channels\_last 是默认值。
  • dilation\_rate :在每个维度上,用于扩张卷积的扩张率。它应该是一个整数。
  • activation :该层的激活函数。
  • use\_bias(布尔值):如果该层有一个偏置向量,或没有。True是默认值。
  • kernel\_initializer :卷积核权重矩阵的初始化器。
  • bias\_initializer :偏压向量的初始化器。
  • kernel\_regularizer :应用于内核权重矩阵的正则函数。
  • bias\_regularizer :应用于偏置向量的正则函数。
  • activity\_regularizer :应用于激活的正则函数。
  • kernel\_constraint :卷积核权重的约束条件。
  • bias\_constraint :偏差向量的约束。

返回:
一个三维张量,代表激活(conv1dtranspose(inputs, kernel) + bias)。

示例 1:

import tensorflow as tf

tensor_shape=(4, 28, 1)
input_shape=tensor_shape[1:]
X=tf.random.normal(tensor_shape)

def model(input_shape):
    X_input=tf.keras.layers.Input(shape=input_shape)
    X_output=tf.keras.layers.Conv1DTranspose(filters=8, 
                                             kernel_size=4,
                                             strides=2)(X_input)
    model=tf.keras.models.Model(inputs=X_input, 
                                outputs=X_output)
    return model

model=model(input_shape)

Y=model.predict(X, steps=2)
print(Y.shape)

输出:

(4, 58, 8)

示例 2:

import tensorflow as tf

tensor_shape = (4, 4, 1)
input_shape = tensor_shape[1:]
X = tf.random.normal(tensor_shape)


def model(input_shape):
    X_input = tf.keras.layers.Input(shape=input_shape)
    X_output = tf.keras.layers.Conv1DTranspose(
        filters=3, kernel_size=3, strides=1)(X_input)
    model = tf.keras.models.Model(inputs=X_input, outputs=X_output)
    return model


model = model(input_shape)

Y = model.predict(X, steps=2)
print(Y)

输出:

[[[-0.30124253 -0.36105427 -0.2042067 ]
[ 0.02215503 -0.02281483 0.06209912]
[ 0.00216722 -0.06402665 -0.45107672]
[ 0.61782545 0.6981941 0.5305761 ]
[ 0.38394764 0.49401727 -0.32046565]
[-0.72445303 -0.70179087 0.51991314]]
[[-0.21620852 -0.25913674 -0.14656372]
[-0.42101222 -0.5400373 -0.2516055 ]
[ 1.1399035 1.2468109 0.51620144]
[ 0.45842776 0.60374933 -0.43827266]
[-0.996245 -0.97118413 0.717214 ]
[ 0.03621851 0.03508553 -0.02599269]]
[[-0.23306094 -0.27933523 -0.15798767]
[ 0.22609143 0.23278703 0.18968783]
[ 0.2541324 0.2872892 -0.21050403]
[ 0.47528732 0.6270335 0.680698 ]
[ 0.05677184 0.1858277 -0.08888393]
[-0.7763872 -0.75210047 0.5571844 ]]
[[ 1.2402442 1.4864949 0.8407385 ]
[-0.580338 -0.49230838 -0.5872358 ]
[-1.7384369 -1.8894652 0.76116455]
[ 0.8071178 0.74401593 -0.37187982]
[ 0.41134852 0.42184594 -0.30380705]
[-0.13865426 -0.13431692 0.09950703]]]