keras正则项约束项激活函数回调函数预训练模型

更新时间:2023-06-09 11:44:46 阅读: 评论:0

keras正则项约束项激活函数回调函数预训练模型
激活函数A ctiv ations
激活函数可以通过设置单独的实现,也可以在构造层对象时通过传递activation参数实现。
from import Activation, Den
model.add(Den(64))
model.add(Activation('tanh'))
等价于
model.add(Den(64, activation='tanh'))
也可以通过传递⼀个逐元素运算的Theano/TensorFlow函数来作为激活函数:
from keras import backend as K def tanh(x):
return K.tanh(x)
model.add(Den(64, activation=tanh))
model.add(Activation(tanh)
预定义激活函数
softmax:对输⼊数据的最后⼀维进⾏softmax,输⼊数据应形如(nb_samples, nb_timesteps, nb_dims)或(nb_samples,nb_dims)
softplus
softsign
relu
tanh
sigmoid
hard_sigmoid
linear
⾼级激活函数
对于简单的Theano/TensorFlow不能表达的复杂激活函数,如含有可学习参数的激活函数,可通过实现,如PReLU,LeakyReLU等
回调函数C allb acks
回调函数是⼀组在训练的特定阶段被调⽤的函数集,你可以使⽤回调函数来观察训练过程中⽹络内部的状态和统计信息。通过传递回调函数列表到模型的.fit()中,即可在给定的训练阶段调⽤该函数集中的函数。
【Tips】虽然我们称之为回调“函数”,但事实上Keras的回调函数是⼀个类,回调函数只是习惯性称呼
C allb ackL is t
keras.callbacks.CallbackList(callbacks=[], queue_length=10)
C allb ack
keras.callbacks.Callback()
这是回调函数的抽象类,定义新的回调函数必须继承⾃该类
类属性
params:字典,训练参数集(如信息显⽰⽅法verbosity,batch⼤⼩,epoch数)
model:dels.Model对象,为正在训练的模型的引⽤
回调函数以字典logs为参数,该字典包含了⼀系列与当前batch或epoch相关的信息。
国庆放假⽬前,模型的.fit()中有下列参数会被记录到logs中:
在每个epoch的结尾处(on_epoch_end),logs将包含训练的正确率和误差,acc和loss,如果指定了验证集,还会包含验证集正确率和误差val_acc)和val_loss,val_acc还额外需要在.compile中启⽤metrics=['accuracy']。
在每个batch的开始处(on_batch_begin):logs包含size,即当前batch的样本数
在每个batch的结尾处(on_batch_end):logs包含loss,若启⽤accuracy则还包含acc
B as e L og g e r
keras.callbacks.BaLogger()
该回调函数⽤来对每个epoch累加metrics指定的监视指标的epoch平均值
该回调函数在每个Keras模型中都会被⾃动调⽤
Pr og b ar L og g e r
keras.callbacks.ProgbarLogger()
该回调函数⽤来将metrics指定的监视指标输出到标准输出上
His tor y
keras.callbacks.History()
该回调函数在Keras模型上会被⾃动调⽤,History对象即为fit⽅法的返回值
Mod e lC he ckp oint
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbo=0, save_best_only=Fal, mode='auto')
该回调函数将在每个epoch后保存模型到filepath
filepath可以是格式化的字符串,⾥⾯的占位符将会被epoch值和传⼊on_epoch_end的logs关键字所填⼊
例如,filename若为```weights.{epoch:02d-{val_loss:.2f}}.hdf5,则会⽣成对应epoch和验证集loss的多个⽂件。
参数
filename:字符串,保存模型的路径
车子几年报废
monitor:需要监视的值
verbo:信息展⽰模式,0或1
save_best_only:当设置为True时,将只保存在验证集上性能最好的模型
mode:‘auto’,‘min’,‘max’之⼀,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字⾃动推断。
save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)
看电影英文E ar lyStop p ing
keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbo=0, mode='auto')
当监测值不再改善时,该回调函数将中⽌训练
参数
monitor:需要监视的量
patience:当early stop被激活(如发现loss相⽐上⼀个epoch训练没有下降),则经过patience个epoch后停⽌训练。
verbo:信息展⽰模式
mode:‘auto’,‘min’,‘max’之⼀,在min模式下,如果检测值停⽌下降则中⽌训练。在max模式下,当检测值不再上升则停⽌训练。
笔记本电脑c盘满了怎么清理
Re m ote Monitor
keras.callbacks.RemoteMonitor(root='localhost:9000')
该回调函数⽤于向服务器发送事件流,该回调函数需要requests库
参数
root:该参数为根url,回调函数将在每个epoch后把产⽣的事件流发送到该地址,事件将被发往root + '/publish/epoch/end/'。发送⽅法为HTTP POST,其data字段的数据是按JSON格式编码的事件字典。
L e ar ning Rate Sche d ule r
keras.callbacks.LearningRateScheduler(schedule)
该回调函数是学习率调度器
参数
schedule:函数,该函数以epoch号为参数(从0算起的整数),返回⼀个新学习率(浮点数)
T e ns or B oar d
keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0)
该回调函数是⼀个可视化的展⽰器
TensorBoard是TensorFlow提供的可视化⼯具,该回调函数将⽇志信息写⼊TensorBorad,使得你可以动态的观察训练和测试指标的图像以及不同层的激活值直⽅图。
如果已经通过pip安装了TensorFlow,我们可通过下⾯的命令启动TensorBoard:
tensorboard --logdir=/full_path_to_your_logs
更多的参考信息,请点击
参数
log_dir:保存⽇志⽂件的地址,该⽂件将被TensorBoard解析以⽤于可视化
histogram_freq:计算各个层激活值直⽅图的频率(每多少个epoch计算⼀次),如果设置为0则不计算。
编写⾃⼰的回调函数
我们可以通过继承keras.callbacks.Callback编写⾃⼰的回调函数,回调函数通过类成员lf.model访问访问,该成员是模型的⼀个引⽤。
这⾥是⼀个简单的保存每个batch的loss的回调函数:
class LossHistory(keras.callbacks.Callback):
def on_train_begin(lf, logs={}):
lf.loss = []    def on_batch_end(lf, batch, logs={}):
lf.loss.('loss'))
例⼦:记录损失函数的历史数据
class LossHistory(keras.callbacks.Callback):
def on_train_begin(lf, logs={}):
lf.loss = []    def on_batch_end(lf, batch, logs={}):
lf.loss.('loss'))
model = Sequential()
model.add(Den(10, input_dim=784, init='uniform'))
model.add(Activation('softmax'))
history = LossHistory()
model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbo=0, callbacks=[history])print history.loss# outputs'''
醉卧沙场君莫笑[0.66047596406559383, 0.3547245744908703, ..., 0.25953155204159617, 0.25901699725311789]
例⼦:模型检查点
from keras.callbacks import ModelCheckpoint
model = Sequential()
model.add(Den(10, input_dim=784, init='uniform'))
model.add(Activation('softmax'))
saves the model weights after each epoch if the validation loss decread
青春背景图
'''checkpointer = ModelCheckpoint(filepath="/tmp/weights.hdf5", verbo=1, save_best_only=True)
model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbo=0, validation_data=(X_test, Y_test), callbacks=[checkpointer])
初始化⽅法
初始化⽅法定义了对Keras层设置初始化权重的⽅法芋头手痒怎么办
不同的层可能使⽤不同的关键字来传递初始化⽅法,⼀般来说指定初始化⽅法的关键字是init,例如:
model.add(Den(64, init='uniform'))
预定义初始化⽅法
uniform
lecun_uniform: 即有输⼊节点数之平⽅根放缩后的均匀分布初始化().
normal
identity:仅⽤于权值矩阵为⽅阵的2D层(shape[0]=shape[1])
orthogonal:仅⽤于权值矩阵为⽅阵的2D层(shape[0]=shape[1]),参考
zero
glorot_normal:由扇⼊扇出放缩后的⾼斯初始化()
glorot_uniform
he_normal:由扇⼊放缩后的⾼斯初始化()
he_uniform
指定初始化⽅法传⼊的可以是⼀个字符串(必须与上⾯某种预定义⽅法匹配),也可以是⼀个可调⽤的对象.如果传⼊可调⽤的对象,则该对象必须包含两个参数:shape(待初始化的变量的shape)和name(该变量的名字),该可调⽤对象必须返回⼀个(Keras)变量,例如K.variable()返回的就是这种变量,下⾯
是例⼦:
from keras import backend as K import numpy as np def my_init(shape, name=None):
value = np.random.random(shape)    return K.variable(value, name=name)
model.add(Den(64, init=my_init))
你也可以按这种⽅法使⽤keras.initializations中的函数:
from keras import initializations def my_init(shape, name=None):
形容树的四字词语al(shape, scale=0.01, name=name)
model.add(Den(64, init=my_init))
正则项

本文发布于:2023-06-09 11:44:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/910909.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   回调   模型   训练   参数   信息   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图