* 以下均为个人观点啦~   随看随更
*
目录

书籍目录:
<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的显示功能

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信