如何使用训练有素的 Keras CNN 模型对新的未标记数据进行预测

Posted

技术标签:

【中文标题】如何使用训练有素的 Keras CNN 模型对新的未标记数据进行预测【英文标题】:How to use trained Keras CNN model for prediction with new unlabeled data 【发布时间】:2021-11-09 00:50:00 【问题描述】:

Google colab 上的温度预测时间序列教程很好地介绍了如何设置各种模型的训练、验证和测试性能。如何使用这个训练有素的 multi_conv_model 使用新的未标记数据运行温度预测。专门寻找如何仅使用输入数据框调用 Keras 预测函数。

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/structured_data/time_series.ipynb

CONV_WIDTH = 3
multi_conv_model = tf.keras.Sequential([
    # Shape [batch, time, features] => [batch, CONV_WIDTH, features]
    tf.keras.layers.Lambda(lambda x: x[:, -CONV_WIDTH:, :]),
    # Shape => [batch, 1, conv_units]
    tf.keras.layers.Conv1D(256, activation='relu', kernel_size=(CONV_WIDTH)),
    # Shape => [batch, 1,  out_steps*features]
    tf.keras.layers.Dense(OUT_STEPS*num_features,
                          kernel_initializer=tf.initializers.zeros()),
    # Shape => [batch, out_steps, features]
    tf.keras.layers.Reshape([OUT_STEPS, num_features])
])

history = compile_and_fit(multi_conv_model, multi_window)

IPython.display.clear_output()

multi_val_performance['Conv'] = multi_conv_model.evaluate(multi_window.val)
multi_performance['Conv'] = multi_conv_model.evaluate(multi_window.test, verbose=0)
multi_window.plot(multi_conv_model)

这是我尝试过的,但它没有给出有意义的 5 期预测:

predict_inputs_df = test_df[:20] # or some other input data points
predict_inputs_df =  (predict_inputs_df - train_mean) / train_std
predictions = conv_model(tf.stack([np.array(predict_inputs_df)]))
predictions

【问题讨论】:

【参考方案1】:

你需要做conv_model.evaluate(tf.stack([np.array(predict_inputs_df)]))

这应该会给你一些结果。

【讨论】:

以上是关于如何使用训练有素的 Keras CNN 模型对新的未标记数据进行预测的主要内容,如果未能解决你的问题,请参考以下文章

keras训练cnn模型时loss为nan

Cnn keras模型没有经过训练的参数表示和改进模型

Keras:如何将 CNN 模型与决策树连接起来

使用 Keras 训练 CNN-LSTM 时卡在第一个 epoch

如何通过预先训练的InceptionV3加速我的Keras CNN

Keras 使用 TimeDistributed 预训练 CNN