卷積神經網絡(Convolutional Neural Network)簡稱CNN,CNN是所有深度學習模型(Model)之一,CNN在影像識別方面的威力非常強大,許多影樣辨識的模型也都是以CNN的架構為基礎去做延伸,可以應用在自動駕駛方面。
TensorFlow提供tf.nn.conv2d()和tf.nn.bias_add()函數來創建自己的卷積層。
# Output depth
k_output = 64
# Image Properties
image_width = 10
image_height = 10
color_channels = 3
# Convolution filter
filter_size_width = 5
filter_size_height = 5
# Input/Image
input = tf.placeholder(
tf.float32,
shape=[None, image_height, image_width, color_channels])
# Weight and bias
weight = tf.Variable(tf.truncated_normal(
[filter_size_height, filter_size_width, color_channels, k_output]))
bias = tf.Variable(tf.zeros(k_output))
# Apply Convolution
conv_layer = tf.nn.conv2d(input, weight, strides=[1, 2, 2, 1], padding='SAME')
# Add bias
conv_layer = tf.nn.bias_add(conv_layer, bias)
# Apply activation function
conv_layer = tf.nn.relu(conv_layer)
上面的代碼使用tf.nn.conv2d()函數計算卷積,其中權重為過濾器,[1,2,2,1]為步幅。 TensorFlow對每個輸入維度使用步幅,[batch,input_height,input_width,input_channels]。 我們通常總是將批處理和input_channels(即strides數組中的第一個和第四個元素)的步幅設置為1。
在將batch和input_channels設置為1時,您將專注於更改input_height和input_width.input_height和input_width strides用於跨過輸入跨越過濾器。 此示例代碼使用2的步幅和5x5濾波器而不是輸入。
tf.nn.bias_add()函數將1-d偏差添加到矩陣中的最後一個維度。