深度学习 AI入门-1

初体验

path = untar_data(URLs.PETS)  # 自动下载并解压数据
fnames = get_image_files(path_img) # 得到路径下所有的图片

data.show_batch(rows=3, figsize=(7,6))  # 查看数据3行,显示尺寸7,6
print(data.classes)  # 数据种类

手写数据集识别:

import torch
from fastai import *
from fastai.vision import *

path = untar_data(URLs.MNIST_SAMPLE)
data = ImageDataBunch.from_folder(path)
learn = cnn_learner(data, models.resnet18, metrics=accuracy)
learn.fit_one_cycle(1)

learn.save('stage-1')  # 保存训练的模型

interp = ClassificationInterpretation.from_learner(learn)
interp.plot_top_losses(9,figsize = (7,7)) # 打印损失最大的九个
interp.plot_confusion_matrix(figsize = (7,7))  # 绘制混淆矩阵

interp.most_confused(min_val=2)  # [('3', '7', 50), ('7', '3', 37)]

'''
most_confused
will simply grab out of the confusion matrix the particular 
combinations of predicted and actual that got wrong the most often. 
简单地从混乱矩阵中找出预测和实际的特定组合,这些组合是最容易出错的。
上面的3和7最容易出错 (实际的,预测的,这种情况发生的次数)上面第一个表示实际上是7,
预测是3,错了22次
'''
# 微调
'''
我们有时候需要微调,重新加了一些层进去后,如果你不解冻,它只会训练新加的一些层,
#而不会训练整个层,这是为了让训练更快,而你要想训练整个层的话,就要先解冻再训练
'''
learn.unfreeze()
learn.fit_one_cycle(1)

learn.lr_find()  # 寻找最适合的学习率
learn.recorder.plot() # 并且画图表示出来

learn.unfreeze()
learn.fit_one_cycle(2, max_lr=slice(1e-6,1e-4))  # 这个学习率区间是看图得出来的
发布了140 篇原创文章 · 获赞 42 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章