后海做網(wǎng)站公司網(wǎng)站推廣的渠道有
文章目錄
- 數(shù)據(jù)集可視化
- 預訓練模型的使用
- 部分實現(xiàn)
- 推理
- 遷移學習:在一個很大的數(shù)據(jù)集上訓練得到一個預訓練模型,然后使用該模型來初始化網(wǎng)絡的權(quán)重參數(shù)或作為固定特征提取器應用于特定的任務中。
- 本章學習使用的是前面學過的ResNet50,使用遷移學習的方法對ImageNet數(shù)據(jù)集中的狼和狗圖像進行分類。
數(shù)據(jù)集可視化
預訓練模型的使用
- 搭建好模型框架后,通過將pretrained參數(shù)設置為True來下載ResNet50的預訓練模型,并將權(quán)重參數(shù)加載到網(wǎng)絡中。
- 使用固定特征進行訓練的時候,需要凍結(jié)除最后一層之外的所有網(wǎng)絡層。通過設置
requires_grad == False
凍結(jié)參數(shù),以便不在反向傳播中計算梯度。
部分實現(xiàn)
import matplotlib.pyplot as plt
import os
import time
# 修改參數(shù)1pretrained=True
net_work = resnet50(pretrained=True)# 全連接層輸入層的大小
in_channels = net_work.fc.in_channels
# 輸出通道數(shù)大小為狼狗分類數(shù)2
head = nn.Dense(in_channels, 2)
# 重置全連接層
net_work.fc = head# 平均池化層kernel size為7
avg_pool = nn.AvgPool2d(kernel_size=7)
# 重置平均池化層
net_work.avg_pool = avg_pool# 凍結(jié)除最后一層外的所有參數(shù)
for param in net_work.get_parameters():if param.name not in ["fc.weight", "fc.bias"]:# 修改參數(shù)2param.requires_grad = False# 定義優(yōu)化器和損失函數(shù)
opt = nn.Momentum(params=net_work.trainable_params(), learning_rate=lr, momentum=0.5)
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')def forward_fn(inputs, targets):logits = net_work(inputs)loss = loss_fn(logits, targets)return lossgrad_fn = ms.value_and_grad(forward_fn, None, opt.parameters)def train_step(inputs, targets):loss, grads = grad_fn(inputs, targets)opt(grads)return loss# 實例化模型
model1 = train.Model(net_work, loss_fn, opt, metrics={"Accuracy": train.Accuracy()})
推理
此章節(jié)學習到此結(jié)束,感謝昇思平臺。