TensorFlow 卷積層
阿新 • • 發佈:2018-07-11
inpu outer http 濾波 code https prope ont 步長
函數來計算卷積,
TensorFlow 卷積層
讓我們看下如何在 TensorFlow 裏面實現 CNN。
TensorFlow 提供了 tf.nn.conv2d()
和 tf.nn.bias_add()
函數來創建你自己的卷積層。
1 # Output depth 2 k_output = 64 3 4 # Image Properties 5 image_width = 10 6 image_height = 10 7 color_channels = 3 8 9 # Convolution filter 10 filter_size_width = 5 11filter_size_height = 5 12 13 # Input/Image 14 input = tf.placeholder( 15 tf.float32, 16 shape=[None, image_height, image_width, color_channels]) 17 18 # Weight and bias 19 weight = tf.Variable(tf.truncated_normal( 20 [filter_size_height, filter_size_width, color_channels, k_output])) 21bias = tf.Variable(tf.zeros(k_output)) 22 23 # Apply Convolution 24 conv_layer = tf.nn.conv2d(input, weight, strides=[1, 2, 2, 1], padding=‘SAME‘) 25 # Add bias 26 conv_layer = tf.nn.bias_add(conv_layer, bias) 27 # Apply activation function 28 conv_layer = tf.nn.relu(conv_layer)
上述代碼用了 tf.nn.conv2d()
weights
作為濾波器,[1, 2, 2, 1]
作為 strides。TensorFlow 對每一個 input
維度使用一個單獨的 stride 參數,[batch, input_height, input_width, input_channels]
。我們通常把 batch
和 input_channels
(strides
序列中的第一個第四個)的 stride 設為 1
。
你可以專註於修改 input_height
和 input_width
, batch
和 input_channels
都設置成 1。input_height
和 input_width
strides 表示濾波器在input
上移動的步長。上述例子中,在 input
之後,設置了一個 5x5 ,stride 為 2 的濾波器。
tf.nn.bias_add()
函數對矩陣的最後一維加了偏置項。
TensorFlow 卷積層