Tensorflow/Tflearn ValueError: невозможно передать значение формы (4, 11, 11) для Tensor 'input/X:0', которое имеет форму '(?, 4, 11, 11)'

У меня есть следующая ошибка:

Файл D:\python\WPy64-3740\python-3.7.4.amd64\lib\site-packages\tensorflow\python\client\session.py, строка 1149, в _run str(subfeed_t.get_shape()))))

ValueError: невозможно передать значение формы (4, 11, 11) для тензора «input/X: 0», который имеет форму «(?, 4, 11, 11)»

Мой код:

with tf.Graph().as_default():
g=tflearn.input_data(shape=[4,11,11],name='input')

g=tflearn.fully_connected(g,512,activation='relu',name="hidden1")
g=tflearn.fully_connected(g,256,activation='relu',name="hidden2")
g=tflearn.fully_connected(g,121,activation='softmax',name="output")
g=tflearn.regression(g,optimizer='adam',learning_rate=1,metric='R2',loss='categorical_crossentropy')

m=tflearn.DNN(g)
m.fit(train_state,train_nextmove,n_epoch=10,batch_size=50,snapshot_epoch=False,shuffle=True)

x0=train_state[34]
pred0=m.predict(x0)

person Heisenberg Granger    schedule 30.06.2020    source источник


Ответы (1)


Я сам решил эту проблему. На самом деле построение этой сети правильное, проблема в предпоследней строке:

x0=train_state[34]
pred0=m.predict(x0)

когда я меняю эти две строки на:

x0=[train_state[34]]
pred0=m.predict(x0)

тогда это работает.

имейте в виду, что когда обучающие данные представляют собой список (n * 4 * 11 * 11), прогнозируемые данные также должны соответствовать тому же формату: не (4 * 11 * 11), а (1 * 4 * 11 * 11). ), или (m* 4* 11* 11), где m — произвольное положительное целое число.

person Heisenberg Granger    schedule 04.07.2020