簡體   English   中英

識別卷積神經網絡的層

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM