Ben TensorFlow bir konvolusyon filenin this example boyunca kodlama oldum ve ben ağırlıkların bu tahsisi ile nazar değilim:Tam bağlı katman ağırlığı boyutları
weights = {
# 5x5 conv, 1 input, 32 outputs
'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])),
# 5x5 conv, 32 inputs, 64 outputs
'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])),
# fully connected, 7*7*64 inputs, 1024 outputs
'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])),
# 1024 inputs, 10 outputs (class prediction)
'out': tf.Variable(tf.random_normal([1024, n_classes]))
}
nasıl bileceğiz ' wd1 'matris matrisi 7 x 7 x 64 satır olmalıdır?
Daha sonra ikinci konvolusyon tabakasının çıkışını yeniden şekillendirmek için kullanılan:
# Fully connected layer
# Reshape conv2 output to fit dense layer input
dense1 = tf.reshape(conv2, [-1, _weights['wd1'].get_shape().as_list()[0]])
# Relu activation
dense1 = tf.nn.relu(tf.add(tf.matmul(dense1, _weights['wd1']), _biases['bd1']))
benim matematik olarak, havuzlama katman 2 (conv2 çıkışı) 4 x 4 x 64 nöronlar vardır.
Niçin [-1, 7 * 7 * 64] şeklini değiştiriyoruz? baştan çalışma
de sadece ben tabakaların boyutluluk hakkında vardı korkunç bir yanlış anlamayı çözüldü. Tamamen "PADDING = aynı" göz ardı edildi ve öngörülebilir şekilde karıştı. Teşekkür ederim!! – jfbeltran
Neden '_X' boyutunda [28x28x1] '? [28x28] değil mi? Neden fazladan x1'? – daniel451
Konvolüsyon operatörleri, girişlerin yükseklik, genişlik ve derinliğe sahip olduğu bir grup beklerler. Son x1 sadece kozmetik bir yeniden şekillendirmedir. – dga