keras 层“hidden1”的输入0与层不兼容:预期min_ndim=2,找到ndim=1

5us2dqdw  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(156)

我训练我模型,使其具有大小为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]

要解决此错误,需要进行哪些更改?

toiithl6

toiithl61#

根据评论,我的输入是np.array((9,))的形式。
要修复该错误,只需对输入进行整形。np.reshape(arr, (1,9))

相关问题