tf2.0,加载模型预测的时候,提示无法计算输出张量
,这种情况多是训练数据和你评估数据不一致导致的,也就是模型的输入不一致。
比如我的错误排查如下:
只给出关键代码,组网部分略过
''' feed input '''
feature_names =deepFMmodel.dense_feature_columns + deepFMmodel.sparse_feature_columns
print(' feature_names: ', feature_names)
train_x = [train_data[name].values for name in feature_names]
test_x = [test_data[name].values for name in feature_names]
val_x = [val_data[name].values for name in feature_names]
train_y = [train_data['y'].values]
test_y = [test_data['y'].values]
val_y = [val_data['y'].values]
model.fit(
train_x, train_y,
batch_size=2000,
epochs=3,
verbose=1,
validation_data=(val_x, val_y),
shuffle=True,
)
model.save(settings.save_path)
full_eval_x = [pdeval_full[name].values for name in feature_names]
full_eval_y = [pdeval_full['y'].values]
model = tf.keras.models.load_model(settings.save_path)
y_pre = model.predict(full_eval_x, batch_size=256)
注意上述的feature_names
,因为我想把训练和评估模块化,所以每次都保存了这个feature_names
,当换网络的时候,feature_names
忘记保存了,所以评估的时候读取的还是原来网络的feature_names
,因为特征不一致,导致无法计算张量输出,保持评估数据和训练数据一致即可。
''' feed input '''
feature_names = deepFMmodel.dense_feature_columns + deepFMmodel.sparse_feature_columns
print(' feature_names: ', feature_names)
with open(settings.feature_names_path, mode='w') as f:
f.write(' '.join(feature_names))