Понять, как использовать функцию tf.nn.conv2d - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь понять, как работает функция tf.nn.conv2d (). Таким образом, я создал для этого простую программу тензорного потока:

import tensorflow as tf
import numpy as np

Nif = 2
Niy = 4
Nix = 4

Nof = 1
Koy =3
Kox = 3

ifmaps  = np.random.randint(3, size=(Nif, Niy, Nix))
print("ifmaps= ", ifmaps)
weights = np.random.randint(3, size=(Nof, Nif, Koy, Kox))
print("weights = ", weights)
weights = np.reshape(weights, (Koy, Kox, Nif,Nof)) 

ifmaps = tf.constant(ifmaps, dtype=tf.float64, shape=[Nif, Niy, Nix])
weights = tf.constant(weights, dtype=tf.float64, shape=[Koy, Kox, Nif,Nof])

ifmaps_tf = tf.reshape(ifmaps, shape=[-1, Niy, Nix, Nif]) #NHWC
weights_tf = tf.reshape(weights, shape = [Koy, Kox, Nif, Nof])

res = tf.nn.conv2d(ifmaps_tf, weights_tf, strides=[1, 1, 1, 1], padding='VALID') #S=1, no padding
#reshape it to NCHW format
ofmap = tf.reshape(res, shape=[ Nof, 2, 2])

with tf.Session() as sess:
   print("ofmap = ", sess.run(ofmap))

Результаты, которые я получаю:

ifmaps=  [[[0 2 1 0]
  [2 0 1 0]
  [0 1 2 1]
  [1 0 2 1]]

 [[0 0 2 1]
  [0 0 1 0]
  [2 1 2 1]
  [0 2 0 2]]]

  weights =  [[[[1 1 1]
   [0 1 0]
   [1 0 2]]

  [[2 2 2]
   [2 2 2]
   [0 1 0]]]]

   ofmap =  [[[17. 21.]
  [20. 16.]]]

Не правильное значение ofmaps! Кто-нибудь может помочь мне получить то, что мне не хватает? Заранее спасибо.

...