tensorflow中的逆卷积操作 输出向量的尺寸计算
程序员文章站
2024-03-16 20:37:46
...
tensorflow中的逆卷积操作
在tensorflow中逆卷积
outputs = nn.conv2d_transpose(
inputs,
self.kernel,
output_shape_tensor,
strides,
padding=self.padding.upper(),
data_format=utils.convert_data_format(self.data_format, ndim=4))
这里的output_shape_tensor, width 和height的计算方法如下,可以根据需要的输出,设计filter_size 和padding.
输出tensor的大小计算
def deconv_output_length(input_length, filter_size, padding, stride):
"""Determines output length of a transposed convolution given input length.
Arguments:
input_length: integer.
filter_size: integer.
padding: one of "same", "valid", "full".
stride: integer.
Returns:
The output length (integer).
"""
if input_length is None:
return None
input_length *= stride
if padding == 'valid':
input_length += max(filter_size - stride, 0)
elif padding == 'full':
input_length -= (stride + filter_size - 2)
return input_length
在slim.conv2d_transpose中 不需要指定output_shape, 我们可以根据需求设定kernel的大小
conv2d_transpose(
inputs,
filters,
kernel_size,
strides=(1, 1),
padding='valid',
data_format='channels_last',
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
)
上一篇: JS封装一个碰撞检测函数
下一篇: unity 简单手势判断(一)