深度学习入门---Keras报错集合笔记

[错误1]

在model.fit()调用之后会出现如下错误说明:

Cannot interpret feed_dict key as Tensor: Tensor Tensor("conv2d_1_input:0", shape=(?, 256, 196, 3), ,dtype=float32) is not an element of this graph

[错误原因]:model底层tensorflow的session中还有数据

[解决方法]:在调用模型前面加一句 keras.backend.clear_session()

[错误2]

InternalError: Dst tensor is not initialized.

[错误原因]:GPU内存不够

[解决方法]:增加GPU内存

[错误3]

自定义class,训练后再load model时找不到

[解决方法]:

如果要加载的模型包含自定义层或其他自定义类或函数,则可以通过 custom_objects 参数将它们传递给加载机制:

from keras.models import load_model
model = load_model('my_model.h5',cunsom_objects={'AttentionLayer':AttentionLayer})#假设AttentionLayer为自定义class

以此类推:

自定义对象的处理与 load_modelmodel_from_jsonmodel_from_yaml 的工作方式相同:

from keras.models import model_from_json
model = model_from_json(json_string, custom_objects={'AttentionLayer': AttentionLayer})或者写为:model = model_from_json(json_string, {'AttentionLayer': AttentionLayer})

[错误4]

模型并非最好训练结果

[解决方法]

 from keras.callbacks import ModelCheckpoint checkpoint = ModelCheckpoint(filepath=file_name(就是你准备存放最好模型的地方),  monitor='val_acc'(或者换成你想监视的值,比如acc,loss, val_loss,其他值应该也可以,还没有试), verbose=1(如果你喜欢进度条,那就选1,如果喜欢清爽的就选0,verbose=冗余的), save_best_only='True'(只保存最好的模型,也可以都保存), mode='auto'(如果监视器monitor选val_acc, mode就选'max',如果monitor选acc,mode也可以选'max',如果monitor选loss,mode就选'min'),一般情况下选'auto', period=1(checkpoints之间间隔的epoch数)) #调用:filepath='weights.best.hdf5' # 有一次提升, 则覆盖一次. checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max') callbacks_list = [checkpoint] # fit model.fit(X, y, validation_split=0.33, nb_epoch=150, batch_size=10, callbacks=callbacks_list, verbose=0)

 
  

你可能感兴趣的:(深度学习入门)