use*_*244 5 python-3.x multiclass-classification tensorflow2.0
我正在运行 2000 个时代的多类模型(总共 40 个类)。该模型运行良好,直到 828 epoch 但在 829 epoch 它给了我一个 InvalidArgumentError (见下面的截图)
下面是我用来构建模型的代码。
n_cats = 40
input_bow = tf.keras.Input(shape=(40), name="bow")
hidden_1 = tf.keras.layers.Dense(200, activation="relu")(input_bow)
hidden_2 = tf.keras.layers.Dense(100, activation="relu")(hidden_1)
hidden_3 = tf.keras.layers.Dense(80, activation="relu")(hidden_2)
hidden_4 = tf.keras.layers.Dense(70, activation="relu")(hidden_3)
output = tf.keras.layers.Dense(n_cats, activation="sigmoid")(hidden_4)
model = tf.keras.Model(inputs=[input_bow], outputs=output)
METRICS = [
tf.keras.metrics.Accuracy(name="Accuracy"),
tf.keras.metrics.Precision(name="precision"),
tf.keras.metrics.Recall(name="recall"),
tf.keras.metrics.AUC(name="auc"),
tf.keras.metrics.BinaryAccuracy(name="binaryAcc")
]
checkpoint_cb = tf.keras.callbacks.ModelCheckpoint(
"my_keras_model.h5", save_best_only=True)
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate=1e-2,
decay_steps=10000,
decay_rate=0.9)
adam_optimizer = tf.keras.optimizers.Adam(learning_rate=lr_schedule)
model.compile(loss="categorical_crossentropy",
optimizer="adam", metrics=METRICS)
training_history = model.fit(
(bow_train),
indus_cat_train,
epochs=2000,
batch_size=128,
callbacks=[checkpoint_cb],
validation_data=(bow_test, indus_cat_test))
Run Code Online (Sandbox Code Playgroud)
请帮助我理解 TensorFlow 的这种行为。是什么导致了这个错误?我已经阅读了这个和这个,但在我的情况下这些似乎不是正确的解释。
小智 11
我认为这个错误是由于 AUC 指标的设置。(参见https://www.tensorflow.org/api_docs/python/tf/keras/metrics/AUC)预测应该是所有非负值而不是[-nan, -nan, ...] 作为您的模型输出。你可以从http://deeplearning.net/software/theano/tutorial/nan_tutorial.html尝试一些东西来处理 NAN。而且,如果你想快速解决这个错误,你可以直接从列表中删除 AUC 指标。
| 归档时间: |
|
| 查看次数: |
4521 次 |
| 最近记录: |