我正在尝试使用simple examples学习Keras GraphNN。我有一个简单的示例数据集,包含784个功能,我想运行这个示例:
# graph model with one input and two outputs
graph = Graph()
graph.add_input(name='input', input_shape=(784,))
graph.add_node(Dense(input_dim=784, output_dim=13), name='dense1', input='input')
graph.add_node(Dense(input_dim=13, output_dim=1), name='dense2', input='input')
graph.add_node(Dense(input_dim=13, output_dim=1), name='dense3', input='dense1')
graph.add_output(name='output1', input='dense2')
graph.add_output(name='output2', input='dense3')
graph.compile('rmsprop', {'output1': 'mse', 'output2': 'mse'})
graph.fit({'input': X_train, 'output1': y_train, 'output2': y_train}, nb_epoch=30)
### here is where I am facing difficulty
score = graph.evaluate({'input': X_test, 'output1': y_test, 'output2': y_test}, batch_size=16, verbose=1)
print 'score: ', score
文档提到了graph.evaluate()
:
评估(data,batch_size = 128,verbose = 1):在某些验证数据上显示模型的性能。 返回:数据的损失分数。 参数:与上面的fit方法相同。 verbose用作二进制标志(进度条或什么都没有)。
从graph.fit()
的定义我们知道:
参数: 数据:字典映射输入名称输出名称到适当的numpy数组。所有数组都应包含相同数量的样本。
虽然我的拟合方法运行得很完美,但我在IndexError: index 1 is out of bounds for size 1
evaluate
我的输入形状是:
Xtrain: (32738, 784)
Xtest: (16125, 784)
ytest: (16125,)
ytrain: (32738,)
我在这里缺少什么?