【问题标题】:Show accuracy and loss with model.predict()使用 model.predict() 显示准确度和损失
【发布时间】:2021-04-20 17:21:29
【问题描述】:

我想知道是否可以通过 Keras 中的 model.predict() 了解损失/准确度?

我试图自己弄清楚,但我失败了。非常感谢您的任何意见。

【问题讨论】:

  • 请按照指南指定的方式显示您的尝试。我们只能在您展示您尝试过的内容后为您提供指导。是的,这是可能的。
  • @seraph 这怎么可能?你用什么方法?是使用model.evaluate()吗?

标签: python tensorflow keras


【解决方案1】:

Keras model.predict() 仅获取输入数据 (X) 并从经过训练的模型中生成输出。它对实际预期值一无所知(y)。 您可以使用model.evaluate() 执行您要求的操作,这实际上需要数据集中的Xy 值,并将在测试模式下为模型生成损失值和指标值。

在生产环境中使用 model.predict() 来获取模型输出。在您的测试和验证阶段,您可能还想使用model.evaluate()

【讨论】:

  • 为了帮助,我需要知道您如何将数据提供给 model.fit。标签是否编码为分类?您是否使用生成器提供数据?您使用的是 flow、flow_from_directory 还是 flow_from_dataframe?
  • 在我的项目中,我使用了 ImageDataGenerator,标签编码为 one-hot 编码向量。我使用了 flow_from_dataframe。
【解决方案2】:

所以我的代码是这样的:

    # Fetch dataset
train_data, test_data = tfds.load(name="imdb_reviews", split=["train", "test"], 
                              batch_size=-1, as_supervised=True)

train_examples, train_labels = tfds.as_numpy(train_data)
test_examples, test_labels = tfds.as_numpy(test_data)

np.save("train_examples", train_examples)
np.save("train_labels", train_labels)

np.save("test_examples", test_examples)
np.save("test_labels", test_labels)
# BUILD MODEL
model = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(model, output_shape=[], input_shape=[], 
                       dtype=tf.string, trainable=True, name='gnews_embedding')

model = build_model(hub_layer)
model.summary()
# SAVE AS CHECKPOINT (THE BEST ONLY)
es = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=4, verbose=1, mode='min')
checkpoint = tf.keras.callbacks.ModelCheckpoint('model.h5', monitor='val_loss', save_best_only=True)

# TRAIN MODEL
history = model.fit(
                train_examples,
                train_labels,
                epochs=20,
                batch_size=BATCH_SIZE,
                validation_split = .2,
                shuffle = True,
                callbacks = [checkpoint, es],
                verbose=1)

# CHECK ACCURACY AND LOSS VALUE
model.load_weights('/app/model.h5')
results = model.evaluate(test_examples, test_labels)

text = "The gold rush apple from natora- this is the most expensive apple."
dataset = tf.data.Dataset.from_tensor_slices([text])
np.save("test_txt", test_txt)
resultsTest = model.evaluate(dataset, test_labels)
print("RESULT ACCURACY = ", resultsTest)

所以我尝试了解此预测的准确性/损失。我可以评估这样一个简单的句子还是只是重新训练模型以获得损失/准确性?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2021-04-23
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多