iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
0
AI & Data

當自動駕駛遇見AI系列 第 29

Day29-當自動駕駛遇見AI-TensorFlow Convolution Layer

前言

卷積神經網絡(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偏差添加到矩陣中的最後一個維度。


上一篇
Day28-當自動駕駛遇見AI- TensorFlow Dropout
下一篇
Day30-當自動駕駛遇見AI- 最大池化器( MaxPooling)
系列文
當自動駕駛遇見AI30

尚未有邦友留言

立即登入留言