神经网络迁移学习以及神经网络中间的各种参数(优化器,学习率,正则化)

        迁移学习:本质上是重用预训练层,是通过类似的已经训练过的模型进行重组。

        目的:使用迁移学习,使用部分已经存在的模型,这样子可以增加训练速度与减少参数的训练量,这里利用的是已存在的模型的权重这一信息。

        注意:如果两个model之间有共享层的话,当一个model的参数改变,那么会影响另一个model的权重,可以通过clone_model进行操作。

keras.clone_model(),clone.set_weights(model.get_weights())

        在迁移模型时,由于一开始是随机权重,所欲将迁移层的权重进行冻结,使用layer.trainable=False。这是为了防止反向传播对迁移的权重有大更改。在训练了几次之后,解冻迁移层,应该降低学习率,防止权重发生更改(这里需要再次编译与训练)。

import tensorflow as tf
from tensorflow import keras
(X_train_full, y_train_full), (X_test, y_test) = keras.datasets.fashion_mnist.load_data()
X_train_full = X_train_full / 255.0
X_test = X_test / 255.0
X_valid, X_train = X_train_full[:5000], X_train_full[5000:]
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]
import numpy as np
def split_dataset(X, y):
    y_5_or_6 = (y == 5) | (y == 6) # sandals or shirts
    y_A = y[~y_5_or_6]
    y_A[y_A > 6] -= 2 # class indices 7, 8, 9 should be moved to 5, 6, 7
    y_B = (y[y_5_or_6] == 6).astype(np.float32) # binary classification task: is it a shirt (class 6)?
    return ((X[~y_5_or_6], y_A),
            (X[y_5_or_6], y_B))

(X_train_A, y_train_A), (X_train_B, y_train_B) = split_dataset(X_train, y_train)
(X_valid_A, y_valid_A), (X_valid_B, y_valid_B) = split_dataset(X_valid, y_valid)
(X_test_A, y_test_A), (X_test_B, y_te
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值