【发布时间】:2020-07-11 05:10:30
【问题描述】:
我的 Tensorflow 卷积层有一个我没想到的形状,我没有看到错误。
我是 TensorFlow 新手,想用这个函数来创建卷积层:
def new_conv_layer(input, # The previous layer.
num_input_channels, # Num. channels in prev. layer.
filter_size, # Width and height of each filter.
num_filters, # Number of filters.
use_pooling=True): # Use 2x2 max-pooling.
shape = [filter_size, filter_size, num_input_channels, num_filters]
weights = new_weights(shape=shape)
biases = new_biases(length=num_filters)
layer = tf.nn.conv2d(input=input_,
filters=weights,
strides=[1, 1, 1, 1],
padding='SAME')
layer += biases
if use_pooling:
layer = tf.nn.max_pool(input=layer,
ksize=[1, 2, 2, 1],
strides=[1, 2, 2, 1],
padding='SAME')
layer = tf.nn.relu(layer)
return layer, weights
但是当我使用它时
num_channels = 1
img_size = 28
x_image = tf.reshape(x, [-1, img_size, img_size, num_channels])
# Convolutional Layer 1.
filter_size1 = 5 # Convolution filters are 5 x 5 pixels.
num_filters1 = 16 # There are 16 of these filters.
layer_conv1, weights_conv1 = new_conv_layer(input=x_image,
num_input_channels=num_channels,
filter_size=filter_size1,
num_filters=num_filters1,
use_pooling=True)
layer_conv1
我得到这个输出:
<tf.Tensor 'Relu:0' shape=(None, 392, 392, 16) dtype=float32>
因为我的图像是一个 28x28 的正方形形状并且我应用了 2x2 池化,所以我预计这个形状是 (None, 14, 14, 16)。
为什么不是这样,我该如何解决?
【问题讨论】:
标签: python tensorflow