* 以下均为个人观点啦~ 随看随更
*
目录
书籍目录:
<https://blog.csdn.net/afeiererer/article/details/81710315#%E7%9B%AE%E5%BD%95%EF%BC%9A>
笔记1:数据预览和数据装载 书6.4
<https://blog.csdn.net/afeiererer/article/details/81710315#%E7%AC%94%E8%AE%B01%EF%BC%9A%E6%95%B0%E6%8D%AE%E9%A2%84%E8%A7%88%E5%92%8C%E6%95%B0%E6%8D%AE%E8%A3%85%E8%BD%BD%20%E4%B9%A66.4>
原书代码整理:
<https://blog.csdn.net/afeiererer/article/details/81710315#%E5%8E%9F%E4%B9%A6%E4%BB%A3%E7%A0%81%E6%95%B4%E7%90%86%EF%BC%9A>
执行结果:
<https://blog.csdn.net/afeiererer/article/details/81710315#%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%EF%BC%9A%E2%80%8B>
代码详解:
<https://blog.csdn.net/afeiererer/article/details/81710315#%E4%BB%A3%E7%A0%81%E8%AF%A6%E8%A7%A3%EF%BC%9A>
transforms.Compose() 多种数据变换,容器
<https://blog.csdn.net/afeiererer/article/details/81710315#transforms.Compose%EF%BC%88%EF%BC%89%20%C2%A0%E5%A4%9A%E7%A7%8D%E6%95%B0%E6%8D%AE%E5%8F%98%E6%8D%A2%EF%BC%8C%E5%AE%B9%E5%99%A8>
transforms.ToTensor() 数据类型转换
<https://blog.csdn.net/afeiererer/article/details/81710315#transforms.ToTensor()%20%C2%A0%C2%A0%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2>
transforms.Normalize() 标准化变换
<https://blog.csdn.net/afeiererer/article/details/81710315#transforms.Normalize()%20%C2%A0%E6%A0%87%E5%87%86%E5%8C%96%E5%8F%98%E6%8D%A2>
torch.utils.data.DataLoader()数据装载
<https://blog.csdn.net/afeiererer/article/details/81710315#torch.utils.data.DataLoader%EF%BC%88%EF%BC%89%E6%95%B0%E6%8D%AE%E8%A3%85%E8%BD%BD>
iter()生成迭代器
<https://blog.csdn.net/afeiererer/article/details/81710315#iter%EF%BC%88%EF%BC%89%E7%94%9F%E6%88%90%E8%BF%AD%E4%BB%A3%E5%99%A8>
next()返回迭代器的下一个项目
<https://blog.csdn.net/afeiererer/article/details/81710315#next%EF%BC%88%EF%BC%89%E8%BF%94%E5%9B%9E%E8%BF%AD%E4%BB%A3%E5%99%A8%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E9%A1%B9%E7%9B%AE>
torchvision.utils.make_grid() 将一个批次的图片构造成网格模式
<https://blog.csdn.net/afeiererer/article/details/81710315#torchvision.utils.make_grid()%20%E5%B0%86%E4%B8%80%E4%B8%AA%E6%89%B9%E6%AC%A1%E7%9A%84%E5%9B%BE%E7%89%87%E6%9E%84%E9%80%A0%E6%88%90%E7%BD%91%E6%A0%BC%E6%A8%A1%E5%BC%8F>
transpose() 改变维度顺序
<https://blog.csdn.net/afeiererer/article/details/81710315#transpose()%20%C2%A0%E6%94%B9%E5%8F%98%E7%BB%B4%E5%BA%A6%E9%A1%BA%E5%BA%8F>
我遇到的坑
<https://blog.csdn.net/afeiererer/article/details/81710315#%E6%88%91%E9%81%87%E5%88%B0%E7%9A%84%E5%9D%91>
首先说,感觉这本书超级适合新手入门的!!!就是从python开始那种
我是已经乱七八糟的学过python,包括一些plt、numpy、opencv,复习了一遍线性代数,尝试学习过一丢丢神经网络才拿到这本书的,所以感觉嗯,1/3
的内容直接略过了(每当这种情况我都有点心疼书钱)但是对于新手我觉得这本书很好的,内容都是有用的,方面都比较全,虽然不是很详细,但是可以对应再查嘛
书籍目录:
* 第一章 浅谈人工智能、神经网络和计算机视觉 P1~P14 相当于概论啦
* 第二章 相关的数学知识 矩阵 、导数
(居然列出了教科书上的公式们,还带简单例题)
* 第三章 神经网络基础
恍然大悟的感觉,一下子懂了几个之前看别的书怎么也没懂得点
* 第四章 卷积神经网络 没看呢,待更
* 第五章 python基础
什么列表切片啥特基础的,还有numpy,plt,甚至有Anaconda的安装...
* 第六章 pyTorch基础
没看呢,待更
* 第七章 迁移学习
没看呢,待更
* 第八章 图像风格迁移实战 就是想学这个才买的哈哈,
没看呢,待更
* 第九章 多模型融合
没看呢,待更
* 第十章 循环神经网络 没看呢,待更
* 第十一章 自动编码器 没看呢,待更
笔记1:数据预览和数据装载 书6.4
原书代码整理:
import torch from torchvision import datasets,transforms import torchvision
from torch.autograd import Variable import numpy as np import cv2
transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean=[0.5,0.5,0.5],std=[0.5,0.5,0.5])])
data_train=datasets.MNIST(root="./data", transform=transform, train=True,
download=True ) data_test=datasets.MNIST(root="./data", transform=transform,
train=False) data_loader_train=torch.utils.data.DataLoader(dataset=data_train,
batch_size=16, shuffle=True)
data_loader_test=torch.utils.data.DataLoader(dataset=data_test, batch_size=16,
shuffle=True) images,labels=next(iter(data_loader_train))
img=torchvision.utils.make_grid(images) img=img.numpy().transpose(1,2,0)
#cv2.imshow('win',img); std=[0.5,0.5,0.5] mean=[0.5,0.5,0.5] img=img*std+mean
print([labels[i] for i in range(16)]) cv2.imshow('win',img);
key_pressed=cv2.waitKey(0);
执行结果:
代码详解:
引入包就不说了 *略
#数据变换
transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean=[0.5,0.5,0.5],std=[0.5,0.5,0.5])])
transforms.Compose() 多种数据变换,容器
transforms.Compose() 相当一种容器,对多种数据变换组合,实例代码中进行了两种变换
transforms.ToTensor() 数据类型转换
将数据转换为Tensor类型,才能再Pytorch中进行计算
transforms.Normalize() 标准化变换
#下载训练集和测试集 data_train=datasets.MNIST(root="./data", transform=transform,
train=True, download=True ) data_test=datasets.MNIST(root="./data",
transform=transform, train=False)
下载训练集和测试集,下载到了当前路径中,实现下载的代码是torchvision.dataset.MNIST
transform用于指定变换,transform之前已经定义过
train=True 代表载入的是数据集的训练集部分,=False:测试集部分
#数据装载 data_loader_train=torch.utils.data.DataLoader(dataset=data_train, #指定数据集
batch_size=64, shuffle=True)
data_loader_test=torch.utils.data.DataLoader(dataset=data_test, batch_size=64,
shuffle=True)
torch.utils.data.DataLoader()数据装载
batch_size 需要将图片打包送给模型训练,设定每个包的大小(图片数量)
shuffle 是否将图片打乱
images,labels=next(iter(data_loader_train))
iter()生成迭代器
output:
next()返回迭代器的下一个项目
output:
#网格变换前,四个维度(batch_size,channel,height,weight)
img=torchvision.utils.make_grid(images) #三个维度 (channel,height,weight)
img=img.numpy().transpose(1,2,0) #改变维度顺序(height,weight,channel)
torchvision.utils.make_grid() 将一个批次的图片构造成网格模式
一个批次的图片整合在了一起(如执行结果),减去了batch_size维度
transpose() 改变维度顺序
(channel,height,weight) --> img=img.numpy().transpose(1,2,0)
-->(height,weight,channel)
std=[0.5,0.5,0.5] mean=[0.5,0.5,0.5] img=img*std+mean
这步处理我没有懂,列出前后对比吧
#打印这批次图片的标签 print([labels[i] for i in range(16)]) #显示 cv2.imshow('win',img);
key_pressed=cv2.waitKey(0);
书中显示是用的plt,但是我的plt不显示图片。。。
我遇到的坑
1.torchvision 我用的是windows,而Anaconda Cloud 里torchvision没有win版本的,其实直接用 pip
install torchvision 就可以
但是我的安装成功了,import
torchvision却会报错,原以为我之前都是conda安装的,所以pip安装不在一个解析器下所以不好使,但是经历了一天半(包括想放弃win而安装ubuntu虚拟机吧啦吧啦)后,终于发现哪出了问题:
我的pillow 包版本低,所以找不到image模块 所以 conda update pillow 之后就ok了,import
torchvision终于正常
2. 我用matplotlib中的pyplot时(plt)
plt.imshow()不显示图片,受到之前的教训,把matplotlib升级试了试,问题来了,在它升级过程中,不知道它和pillow有什么关系,竟将pillow降级了,可想而知,我的torchvision又不能用了
所以最后又把pillow给更新了,用cv2代替plt的显示功能
热门工具 换一换