输入层
#将x改为4-d张量:【批量大小、宽度、高度、通道】
输入_层=tf.重塑(功能[“x”],[-1,img_大小,img_大小,3])
打印(输入_layer.get_shape(),'224,224,3')
#卷积层1
#输入张量形状:【批量大小,224,224,3】
conv1=tf.layers.conv2d(
输入=输入层,
过滤器=96,
内核大小=[7,7],
步幅=2,
padding=“有效”padding=1
激活=tf.nn.relu)
打印(conv1.get_shape(),'110,110,96')
#最大池层
#输入张量形状:【批量大小,110,110,96】
pool1=tf.layers.max_pooling2d(输入=conv1,pool_size=[3,3],步幅=2)
#对比度归一化
#输入张量形状:【批量大小,55、55、96】
对比度_Norm1=tf.nn.局部响应_Normalization(
POOL1,
深度_半径=5,
偏差=1,
α=0.0001,
β=0.75)
打印(contrast_norm1.get_shape(),'55,55,96')
#CNN的其他人…
输出:括号内-实际尺寸,外部-所需尺寸/纸张尺寸
(?,224,224,3)224,224,3输入
?,109,109,96)110,110,96
?,54,54,96)55,55,96对比度正常1后
使用TensorFlow。
我已经将输入格式化为224, 224, 3
并具有以下张量流层。我得到的问题是conv1
不是110乘110乘96,而是109乘109乘96。我怎么修这个?
我遵循了第8页论文中指定的超参数。我唯一的想法是填充可能不正确(正如TensorFlow为您设置的那样)。
我的代码如下:
# Input Layer
# Reshape X to 4-D tensor: [batch_size, width, height, channels]
input_layer = tf.reshape(features["x"], [-1, IMG_SIZE, IMG_SIZE, 3])
print(input_layer.get_shape(), '224, 224, 3')
# Convolutional Layer #1
# Input Tensor Shape: [batch_size, 224, 224, 3]
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=96,
kernel_size=[7, 7],
strides=2,
padding="valid", # padding = 1
activation=tf.nn.relu)
print(conv1.get_shape(), '110, 110, 96')
# Max Pooling Layer
# Input Tensor Shape: [batch_size, 110, 110, 96]
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[3, 3], strides=2)
# Contrast Normalisation
# Input Tensor Shape: [batch_size, 55, 55, 96]
contrast_norm1 = tf.nn.local_response_normalization(
pool1,
depth_radius=5,
bias=1,
alpha=0.0001,
beta=0.75)
print(contrast_norm1.get_shape(), '55, 55, 96')
# The rest of the CNN...
输出:括号内-实际尺寸,外部-所需尺寸/纸张尺寸
(?, 224, 224, 3) 224, 224, 3 # Input
(?, 109, 109, 96) 110, 110, 96 # Following conv1
(?, 54, 54, 96) 55, 55, 96 # Following contrast_norm1