验证损失是nan,但训练损失是好的。
我该怎么解决它呢?
我已经确认数据集中没有NaN值。
from tensorflow import keras
base_model = keras.applications.resnet50.ResNet50(include_top = False, weights='imagenet')
for layer in base_model.layers:
layer.trainable = False
avg = keras.layers.GlobalAveragePooling2D(name="global_avg")(base_model.output)
output = keras.layers.Dense(1, activation = 'sigmoid', name = "predictions")(avg)
model = keras.Model(inputs = base_model.input, outputs = output, name = "ResNet-50")
optimizer = keras.optimizers.SGD(lr=0.01, momentum=0.9, decay=0.0001, clipnorm = 0.1)
reduce_LROP = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto',
min_delta=0.0001, cooldown=0, min_lr=0)
model.compile(loss=tf.keras.losses.BinaryCrossentropy(), optimizer = optimizer, metrics = ['accuracy'])
history = model.fit(tri, y_train, epochs = 10, batch_size = 32, validation_data = (vai, y_val),
callbacks = [reduce_LROP])

发布于 2020-10-20 22:01:09
我买了GIGABYTE RTX 3080游戏oc 10 to用于深度学习,并用它来训练模型。
我在4个环境中测试了相同的脚本:
<代码>G29
除了第一个环境之外,验证损失是正常的。
使用Tensorflow nightly build和CUDA11.0的解决了我的问题。
https://stackoverflow.com/questions/64439540
复制相似问题