Python val_损失没有从inf+;损失:训练时发生错误

Python val_损失没有从inf+;损失:训练时发生错误,python,tensorflow,keras,python-3.8,Python,Tensorflow,Keras,Python 3.8,当我开始训练我的模型时,出现了一个问题。 该错误表示val_损失没有从inf和loss:nan得到改善。 一开始我以为这是因为学习率,但现在我不确定这是什么,因为我尝试了几种不同的学习率,但没有一种对我有效。 我希望有人能帮助我 我的偏好 优化器=亚当, 学习率=0.01 (我已经尝试了一系列不同的学习率,例如:0.0005、0.001、0.00146、0.005、0.5、0.6、0.7、0.8,但这些都不适用于我) 提前停止=已启用 (训练正在停止,因为在第3纪元出现了提前停止,因为没有任何改

当我开始训练我的模型时,出现了一个问题。 该错误表示val_损失没有从inf和loss:nan得到改善。 一开始我以为这是因为学习率,但现在我不确定这是什么,因为我尝试了几种不同的学习率,但没有一种对我有效。 我希望有人能帮助我

我的偏好 优化器=亚当, 学习率=0.01 (我已经尝试了一系列不同的学习率,例如:0.0005、0.001、0.00146、0.005、0.5、0.6、0.7、0.8,但这些都不适用于我) 提前停止=已启用 (训练正在停止,因为在第3纪元出现了提前停止,因为没有任何改进。我还禁用了每次模型在第3纪元停止训练时的提前停止,并让它在未启用提前停止的情况下创建100个纪元。) ReduceLR=禁用

关于我尝试训练我的模特的内容 我尝试在我的gpu上训练这个模型(EVGA RTX 3080 FTW3 ULTRA)

很少有评论

在这种情况下,最好采用试错法。看起来你的参数在训练时出现了偏差。很多可能性可能是问题所在。此外,你似乎也在规范你的人际网络(辍学、BatchNorm等)

建议:
  • 将输入数据正常化,然后再输入网络
  • 注释退出/删除您根据自己的喜好使用的所有退出(正则化)/内核初始化器(使用默认初始化)/提前停止等,并让网络成为一个普通的CNN网络,只有conv层、pooling层、batchnorm层和稠密层。如果您看到改进,然后开始逐个取消注释,您将了解问题的原因
  • 尝试在稠密层中使用较大的单位,例如1000,因为稠密层提取CNN层压缩的所有内容(图像特征)

请提供代码,或者至少是相关部分,如果你知道哪个是?当然,我会在我的问题部分提供你是否使用
AMD图形卡
不,我使用的是nvidia rtx 3080好的,我会试试的谢谢你很多你好,我试过了所有方法,但都不管用。你有没有其他方法可以尝试解决我的问题?这太糟糕了。如果你提供了任何colab链接,我会很乐意亲自检查代码。我不与colab合作,我是sorry@MarlonTeixeira是的,我解决了,这是因为Cuda的安装方式不正确。我通过观看教程并以正确的方式重新安装Cuda修复了它。希望我能帮忙
model = Sequential()


model.add(Conv2D(32,(3,3),padding='same',kernel_initializer='he_normal',input_shape=(img_rows, img_cols,1)))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(Conv2D(32,(3,3),padding='same',kernel_initializer='he_normal',input_shape=(img_rows,img_cols,1)))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))


model.add(Conv2D(64,(3,3),padding='same',kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(Conv2D(64,(3,3),padding='same',kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))


model.add(Conv2D(128,(3,3),padding='same',kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(Conv2D(128,(3,3),padding='same',kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))


model.add(Conv2D(256,(3,3),padding='same',kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(Conv2D(256,(3,3),padding='same',kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))


model.add(Flatten())
model.add(Dense(64,kernel_initializer='he_normal'))
model.add(BatchNormalization())
model.add(Dropout(0.5))


model.add(Dense(64,kernel_initializer='he_normal'))
model.add(Activation('elu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))


model.add(Dense(num_classes,kernel_initializer='he_normal'))
model.add(Activation('softmax'))


print(model.summary())


from keras.optimizers import RMSprop,SGD,Adam
from keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau 


checkpoint = ModelCheckpoint('Wave.h5',
                             monitor='val_loss',
                             mode='min',
                             save_best_only=True,
                             verbose=1)


earlystop = EarlyStopping(monitor='val_loss',
                              min_delta=0,
                              patience=3,
                              verbose=1,
                              restore_best_weights=True)


'''reduce_lr = ReduceLROnPlateau(monitor='val_loss',
                              factor=0.2,
                              patience=3,
                              verbose=1,
                              min_delta=0.0001)'''


callbacks = [earlystop,checkpoint] #reduce_lr


model.compile(loss='categorical_crossentropy',
              optimizer= Adam(lr=0.01),   
              metrics=['accuracy'])