tf.nn.conv2d是tensorflow裡面實現卷積的函式,參考文件對它的介紹並不是很詳細,實際上這是搭建卷積神經網路比較核心的乙個方法,非常重要
除去name引數用以指定該操作的name,與方法有關的一共五個引數:
第乙個引數input:指需要做卷積的輸入影象,它要求是乙個tensor,具有[batch, in_height, in_width, in_channels]這樣的shape,具體含義是[訓練時乙個batch的數量, 高度, 寬度, 影象通道數],注意這是乙個4維的tensor,要求型別為float32和float64其中之一
第二個引數filter:相當於cnn中的卷積核,它要求是乙個tensor,具有
[filter_height, filter_width, in_channels, out_channels]這樣的shape
,具體含義是[卷積核的高度,
卷積核的寬度,影象通道數,卷積核個數
],要求型別與引數input相同,有乙個地方需要注意,第三維in_channels
,就是引數input的第四維
第三個引數strides:卷積時在影象每一維的步長,這是乙個一維的向量,長度4
第四個引數padding:string型別的量,只能是"same","valid"其中之一,這個值決定了不同的卷積方式(後面會介紹)
第五個引數:use_cudnn_on_gpu:bool型別,是否使用cudnn加速,預設為true
結果返回乙個tensor,這個輸出,就是我們常說的feature map
importtensorflow as tf
input =tf.variable([
[1.0, 2.0, 3.0, 4.0],
[5.0, 6.0, 7.0, 8.0],
[8.0, 7.0, 6.0, 5.0],
[4.0, 3.0, 2.0, 1.0]])
input=tf.reshape(input,[1,4,4,1])
filter = tf.variable(tf.random_normal([2,2,1,1]))
op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='
valid')
init=tf.global_variables_initializer()
with tf.session() as sess:
sess.run(init)
(sess.run(input))
(sess.run(op))
sess.close()
s輸出結果:
[[[[ 1.]
[ 2.]
[ 3.]
[ 4.]]
[[ 5.]
[ 6.]
[ 7.]
[ 8.]]
[[ 8.]
[ 7.]
[ 6.]
[ 5.]]
[[ 4.]
[ 3.]
[ 2.]
[ 1.]]]]
[[[[ -5.89250851]
[ -7.98477077]
[-10.077034 ]]
[[-12.00638008]
[-12.8220768 ]
[-13.63777256]]
[[-12.93785667]
[-10.84559441]
[ -8.75333118]]]]
參考:
轉 A2W W2A T2A T2W 等巨集
如果你覺得使用 widechartomultibyte,multibytetowidechar 等函式比較麻煩 眾多的引數,緩衝區的分配與銷毀等。那麼可以使用 a2w w2a t2a t2w 等巨集來代替,它們對上面兩個函式進行了封裝。在使用這些巨集之前,應該包含標頭檔案 atlconv.h 並在呼...
2 基礎控制項2
transform 的預設值為 1,0,0,1,0,0 nslog nsstringfrom 可以列印其他型別的 比如類 affine transform a ffine transform 的初始化為 make make 只能改變一次 不可重複改變 如果想要重複改變 則使用去掉 make 的方法t...
什麼是P2P,O2O,B2B,B2C,C2C模式
最近網際網路行業各種to的模式搞得人暈頭轉向,我也是在這整理一下,防止在聽別人裝b的時候對答不流 p2p peer to peer 對等網路 可以簡單的定義成通過直接交換來共享計算機資源和服務,而對等計算模型應用層形成的網路通常稱為對等網路。在p2p網路環境中,成千上萬臺彼此連線的計算機都處於對等的...