我训练我模型,使其具有大小为n * n的向量输入。
我训练模型并加载它,然后尝试在一个n * n 1的dim数组上调用它,我得到了标题中的错误。
def gen_models(m, n, r, vnf_fail_prob, server_fail_prob, num_rounds):
training_data = gen_training_data(m, n, r, vnf_fail_prob, server_fail_prob, num_rounds)
inputs = [x[0] for x in training_data]
input_arr = np.array(inputs)
for i in range(n):
model = keras.Sequential()
model.add(keras.layers.Dense(32, input_shape=(n*n,), activation='relu', name='hidden1'))
model.add(keras.layers.Dense(64, activation='relu', name='hidden2'))
model.add(keras.layers.Dense(256, activation='relu', name='hidden3'))
model.add(keras.layers.Dense(n, activation='softmax', name='output'))
model.build((m,n))
opt = keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
outputs = [x[1][i] for x in training_data]
output_arr = np.array(outputs)
model.fit(x=input_arr, y=output_arr,batch_size=1024, epochs=1000, shuffle=True)
model.save(f'../models/model{i}.h5')
然后加载模型并尝试在一些数据上调用它。
Model0 = keras.models.load_model('./models/model0.h5')
cost_vec = gen_training_instance(G)[0]
print(cost_vec)
Model0(cost_vec)
我的cost vec如果一个3x3数组是扁平的,看起来像这样。
[0.04569468 0.17683705 0.18402121 0.02979581 0.11263915 0.11706112
0.0414878 0.15954582 0.16596771]
要解决此错误,需要进行哪些更改?
1条答案
按热度按时间toiithl61#
根据评论,我的输入是
np.array((9,))
的形式。要修复该错误,只需对输入进行整形。
np.reshape(arr, (1,9))
。