【深度学习】kears学习笔记(二)

1.one-hot编码

from tensorflow.keras.utils import to_categorical

y_train = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y_train = to_categorical(y_train, num_classes=10)
print(type(y_train))

num_classes:设定的类别个数,相当于把每个样本编码成num_classes位二进制,默认为y_train中最大值加1

2.EarlyStopping

tf.keras.callbacks.EarlyStopping(
    monitor="val_loss",
    min_delta=0,
    patience=0,
    verbose=0,
    mode="auto",
    baseline=None,
    restore_best_weights=False,
)

model.fit()训练过程中,每次迭代完监视器会查看loss是否不再改变,如果连续patience次loss都不再改变,那么训练将会终止。

3.ReduceLROnPlateau(减小学习率)

tf.keras.callbacks.ReduceLROnPlateau(
    monitor="val_loss",
    factor=0.1,
    patience=10,
    verbose=0,
    mode="auto",
    min_delta=0.0001,
    cooldown=0,
    min_lr=0,
    **kwargs
)

monitor:监控指标,默认为loss
factor: 学习率乘子new_lr = lr * factor
min_lr:学习率下限
model:可取值{'auto','min','max'}之一。在“min"模式下,当监测的指标停止减少时,学习率将降低;“max”模式下,当监测的指标停止增加时,学习率将降低;“auto”模式下,将根据监测指标的名称自动推断方向。
patience:多少次迭代后更新学习率

举个栗子:

model.compile(optimizer=adam, loss='binary_crossentropy',
              metrics=['accuracy'])

early_stopping = EarlyStopping(
    monitor="loss",
    patience=10
)

red_lr = ReduceLROnPlateau(
    monitor="loss",
    patience=5,
    factor=0.1,
    min_lr=1e-5,
    model="min"
)

print("Training-------------")
model.fit(x_train, y_train, epochs=100, batch_size=8, callbacks=[early_stopping, red_lr])
print("Testing--------------")
model.evaluate(x_test, y_test)   

个人认为,ReduceLROnPlateau中参数patience应当小于EarlyStopping中的参数patience,否则永远不可能执行学习率减小函数,一旦连续patience次的loss全不变,此时若是大于,则先终止了训练,学习率无法改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值