1
我試圖做Tensorflow如下:8預定義的二進制卷積濾鏡 - Tensorflow
爲此,我已經做了迄今爲止以下:
def new_weights(shape):
return tf.Variable(tf.truncated_normal(shape, stddev=0.05))
# From here down is another function
shape = [3, 3, 1, 8,]
H = [
[[0, 1, 0,],[0, -1, 0,],[0, 0, 0,],],
[[0, 0, 1,],[0, -1, 0,],[0, 0, 0,],],
[[0, 0, 0,],[0, -1, 1,],[0, 0, 0,],],
[[0, 0, 0,],[0, -1, 0,],[0, 0, 1,],],
[[0, 0, 0,],[0, -1, 0,],[0, 1, 0,],],
[[0, 0, 0,],[0, -1, 0,],[1, 0, 0,],],
[[0, 0, 0,],[1, -1, 0,],[0, 0, 0,],],
[[1, 0, 0,],[0, -1, 0,],[0, 0, 0,],]
]
anchor_weights = tf.reshape(tf.cast(H, tf.float32), shape)
layer = tf.nn.conv2d(input=input,
filter=anchor_weights,
strides=[1, 1, 1, 1],
padding='SAME')
layer = tf.nn.max_pool(value=layer,
ksize=[1, 2, 2, 1],
strides=[1, 2, 2, 1],
padding='SAME')
layer = tf.nn.relu(layer)
feature_maps = layer
shape = [1, 1, 8, 1]
v = tf.cast(new_weights(shape), tf.float32)
# To put all together
layer = tf.nn.conv2d(input=feature_maps,
filter=v,
strides=[1, 1, 1, 1],
padding="SAME")
但當我去打印anchor_weights和feature_maps時,我會做出迴應。
對我來說,這似乎是完全錯誤的什麼我需要一個會像第一個圖像我發現你。
我不知道如何解決這個問題,有什麼想法?
我明白了!這完美的作品!謝謝!但是,你能否試着向我解釋究竟有什麼作用?它究竟在哪裏工作? (也就是說,發生這種變化的地方) 有沒有什麼方法可以打印H並將其視爲具有8個矩陣3x3的矢量? – QuestionsStackOverflow
您使用張量'H'作爲'tf.conv2d'的內核,內核必須具有形狀'[3,3,1,8] = [kernel_w,kernel_h,inp_ch,out_ch]'。 'tf.reshape'不改變張量元素的順序,只描述形狀。 –
也許你可以幫助我:https://stackoverflow.com/questions/46976483/set-initial-value-of-a-tf-variable-python-tensorflow/46976721#46976721 – QuestionsStackOverflow