TF之CNN:Tensorflow构建卷积神经网络CNN的简介、使用方法、应用之详细攻略
TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的簡(jiǎn)介、使用方法、應(yīng)用之詳細(xì)攻略
?
?
目錄
TensorFlow 中的卷積有關(guān)函數(shù)入門
1、tf.nn.conv2d函數(shù)
案例應(yīng)用
1、TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN
2、使用簡(jiǎn)單的函數(shù)來(lái)替代上面的定義
?
?
?
TensorFlow 中的卷積有關(guān)函數(shù)入門
? ? TensorFlow 構(gòu)建卷積網(wǎng)絡(luò)之前,我們需要了解一下 TensorFlow 中的函數(shù):conv_2d() 和 fully_connected() 函數(shù)分別構(gòu)建了卷積層和全連接層。通過(guò)這些函數(shù),層級(jí)的數(shù)量、濾波器的大小/深度、激活函數(shù)的類型等都可以明確地作為一個(gè)參數(shù)。權(quán)重矩陣和偏置向量能自動(dòng)創(chuàng)建,附加激活函數(shù)和 dropout 正則化層同樣也能輕松構(gòu)建。
1、tf.nn.conv2d函數(shù)
tf.nn.conv2d是TensorFlow里面實(shí)現(xiàn)卷積的函數(shù),參考文檔對(duì)它的介紹并不是很詳細(xì),實(shí)際上這是搭建卷積神經(jīng)網(wǎng)絡(luò)比較核心的一個(gè)方法,非常重要
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
除去name參數(shù)用以指定該操作的name,與方法有關(guān)的一共五個(gè)參數(shù):
第一個(gè)參數(shù)input:指需要做卷積的輸入圖像,它要求是一個(gè)Tensor,具有[batch, in_height, in_width, in_channels]這樣的shape,具體含義是[訓(xùn)練時(shí)一個(gè)batch的圖片數(shù)量, 圖片高度, 圖片寬度, 圖像通道數(shù)],注意這是一個(gè)4維的Tensor,要求類型為float32和float64其中之一
第二個(gè)參數(shù)filter:相當(dāng)于CNN中的卷積核,它要求是一個(gè)Tensor,具有[filter_height, filter_width, in_channels, out_channels]這樣的shape,具體含義是[卷積核的高度,卷積核的寬度,圖像通道數(shù),卷積核個(gè)數(shù)],要求類型與參數(shù)input相同,有一個(gè)地方需要注意,第三維in_channels,就是參數(shù)input的第四維
第三個(gè)參數(shù)strides:卷積時(shí)在圖像每一維的步長(zhǎng),這是一個(gè)一維的向量,長(zhǎng)度4
第四個(gè)參數(shù)padding:string類型的量,只能是"SAME","VALID"其中之一,這個(gè)值決定了不同的卷積方式(后面會(huì)介紹)
第五個(gè)參數(shù):use_cudnn_on_gpu:bool類型,是否使用cudnn加速,默認(rèn)為true
結(jié)果返回一個(gè)Tensor,這個(gè)輸出,就是我們常說(shuō)的feature map,shape仍然是[batch, height, width, channels]這種形式。
?
案例應(yīng)用
1、TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN
#TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN #1、定義卷積層網(wǎng)絡(luò) import tensorflow as tf w1 = tf. Variable (tf.truncated_normal([filter_size, filter_size, image_depth, filter_depth], stddev= 0.1 )) b1 = tf. Variable (tf.zeros([filter_depth])) layer1_conv = tf.nn.conv2d(data, w1, [ 1 , 1 , 1 , 1 ], padding= 'SAME' ) layer1_relu = tf.nn.relu(layer1_conv + b1) layer1_pool = tf.nn.max_pool(layer1_pool, [ 1 , 2 , 2 , 1 ], [ 1 , 2 , 2 , 1 ], padding= 'SAME' )?
?
2、使用簡(jiǎn)單的函數(shù)來(lái)替代上面的定義
#2、使用簡(jiǎn)單的函數(shù)來(lái)替代上面的定義 from tflearn.layers.conv import conv_2d, max_pool_2d layer1_conv = conv_2d(data, filter_depth, filter_size, activation= 'relu' ) layer1_pool = max_pool_2d(layer1_conv_relu, 2 , strides= 2 )?
?
參考文獻(xiàn)
TF-卷積函數(shù) tf.nn.conv2d 介紹
?
?
總結(jié)
以上是生活随笔為你收集整理的TF之CNN:Tensorflow构建卷积神经网络CNN的简介、使用方法、应用之详细攻略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TF之DNN:利用DNN【784→500
- 下一篇: Keras之CNN:基于Keras利用c