Я только начинаю изучать cntk. Однако у меня есть основной вопрос, который удерживает меня от прогресса. У меня есть следующий тест, который проходит:
import numpy as np
from cntk import input_variable, plus
def test_simple(self):
x_input = np.asarray([[1, 2, 2]], dtype=np.int64)
assert (1, 3) == x_input.shape
y_input = np.asarray([[5, 3, 3]], dtype=np.int64)
assert (1, 3) == y_input.shape
x = input_variable(x_input.shape[1])
assert (3, ) == x.shape
y = input_variable(y_input.shape[1])
assert (3, ) == y.shape
x_plus_y = plus(x, y)
assert (3, ) == x_plus_y.shape
res = x_plus_y.eval({x: x_input, y: y_input})
assert 6 == res[0, 0, 0]
assert 5 == res[0, 0, 1]
assert 5 == res[0, 0, 2]
Я понимаю, что форма вывода (1, 1, 3), поскольку первая и вторая оси являются динамической осью партии и по умолчанию соответственно.
Однако зачем мне задавать форму входных переменных как (3,) вместо (1, 3). Использование (1, 3) не работает.
Почему существует несоответствие между формой входного узла на графике и пустыми данными, используемыми в качестве входных данных для этого узла?
Спасибо, Падди.