[英]Identify the layers of a Convolutional Neural Network
我理解這些評論嗎? 這些是我模型的 5 層嗎,如下所述?
# input - conv - conv - linear - linear(fc)
def model(data): # input Layer
# 1 conv Layer
conv = tf.nn.conv2d(data, layer1_weights, [1, 2, 2, 1], padding='SAME')
hidden = tf.nn.relu(conv + layer1_biases) # Activation function
# 1 conv Layer
conv = tf.nn.conv2d(hidden, layer2_weights, [1, 2, 2, 1], padding='SAME')
hidden = tf.nn.relu(conv + layer2_biases) # Activation function
# not a layer ( just reshape)
shape = hidden.get_shape().as_list()
reshape = tf.reshape(hidden, [shape[0], shape[1] * shape[2] * shape[3]])
# 1 linear layer - not fc due to relu
hidden = tf.nn.relu(tf.matmul(reshape, layer3_weights) + layer3_biases)
# 1 linear fully connected layer
return tf.matmul(hidden, layer4_weights) + layer4_biases
# 1 linear layer - not fc due to relu
hidden = tf.nn.relu(tf.matmul(reshape, layer3_weights) + layer3_biases)
在這一層中,它是一個全連接層,它通過一個“RELU”激活函數。 這段代碼的層就是這部分
tf.matmul(reshape, layer3_weights) + layer3_biases
你正在通過 relu 激活函數發送這一層
tf.nn.relu(tf.matmul(reshape, layer3_weights) + layer3_biases)
除此之外,這一切似乎都很好。
您的評論標簽是正確的,但我認為您的代碼存在問題。
如果您查看tf.nn.conv2d
的定義:
conv2d(
input,
filter,
strides,
padding,
use_cudnn_on_gpu=True,
data_format='NHWC',
name=None
)
你看到第二個參數不是權重而是過濾器(內核)形狀,定義為: [filter_height, filter_width, in_channels, out_channels]
您可以改用tf.layers.conv2d 。 它簡化了代碼,並在一行中完成了權重、偏差和激活。 例如
conv1 = conv2d(data, filters, kernel_size=[2, 2], padding='same', activation=tf.nn.relu)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.