Keras - LSTM
有新的东西的话会持续更新
,本人也是在学习,如果有哪里不对的地方,请各位看官指出
fit() 和fit_generator()返回的对象history
这个一般返回的是一个字典,里面包含了epoch和对应的loss信息。
一般来说,history下面有epoch,history,model,params。
我们一般需要的loss信息在history.history这个字典里面。
在metrics选定是r square的层级关系如下图:
callbacks函数之ModelCheckPoint
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)
source code
创建ModelCheckpoint分三步
第一步,先定义一个保存model的file_path
;
第二步,创建ModelCheckpoint
对象;
第三步,在fit()
或者fit_generator()
添加callbacks=[{your_ModelCheckpoint_instance_name}
]即可
腾讯云社区有一个很好的例子,可以分享个传送门
btw,官方源码推荐的file_path是 weights.{epoch:02d}-{val_loss:.2f}.hdf5
,这个可以自动的读取训练时候的epo和loss数值;如果你有用类似与nni的AutoML的话,推荐+上experiment id 和 trial id。
Callbacks之EarlyStopping
keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False)
source code
其中,EarlyStopping和ModelCheckpoint类似的monitor,指的是你是根据哪个指标进行决策判断,可以是val_loss(验证集的loss),loss(训练的loss),acc(准确率)等。
不同于ModelCheckpoint的是,EarlyStopping不需要声明file_path
(明摆着。。。),声明一个EarlyStopping对象,然后在fit的时候,在callbacks加上这个对象就好了。fit_generator
部分注意看callbacks就好。
early_stopping = EarlyStopping(monitor='loss', patience=2, verbose=1, mode="auto")
history = model.fit_generator(fun.generate_3d_from_dict(_dict_train),\
steps_per_epoch=cv_length_of_dataset//(params['batch_size']), epochs=params['epochs_num'],max_queue_size=1,callbacks=[early_stopping, checkpoint])
ISSUE- nni.report_final_result()和nni.report_intermediate_result()在WEB ui没有数字显示
在使用report_final_result(loss)
和report_intermediate_result(acc
)这两函数的时候,我能确定传的参数loss,与acc有值,并且TYPE为NUMPY FLOAT64
。但是仍然出现下图的情况。
default metric那一列为–。 代码写的很规范,刚有的也都有。
于是我进去源码去看,metric确实有值且为正确的值。
在standalone的模式,可以看到platform.send_metric(metric)
里面的情况没问题,但是使用nnictl create --config xxxx.yml
后,在web UI一直看不到default metric那一列的值。要说都看不到就好了,但是某些trail还是能有值(final score
和intermediate score
都有)。
我找到这个experiments里某个trial里面,里面有一个叫metric的文件,其实每个不显示或者显示default metric的trail里面,都存着完整的intermediate score
和final score
,但就是不知道什么原因没法在web UI上面。
目前这个问题还没有得到解答,但是我把项目从wins系统转移到osx系统后,完美运行。。。。。