1.定义一个类传入dataset
2.要完成getitem方法,返回img和label
3.len方法,返回
from torch.utils.tensorboard import summarywriter
1.写日志summarywriter(“log”)
2.add_scalar()
参数:title,y值,步长
3.打开tensorboard
在命令行执行,tensorboard --logdir=log --port=6007
4.在tensorboard中添加图片,add_image()
imge.open函数打开图片,利用np.array将imag图片转化为数组
add_image的参数:tag,image,dataform=hwc
from torchvision import transforms
1.函数transforms.totensor():将图片转化为tensor数据类型
使用:首先创建具体的工具tool=transforms.totensor()
然后使用工具result=tool(input)
1.totensor
2.nomalize(均值,标准差),归一化
3.resize()
4.compose()
compose需要的参数是一个列表,类型是transforms类型,作用是将transforms的工具组合到一起
5.randomcrop()随机裁剪
import torchvision
torchvision.datasets.CIFAR10(位置,是否用来训练,是否自动下载)
小技巧:查看函数参数ctrl+p
查看数据的第一个数据,用索引
batch_size:每次采用几个数据
shuffle:是否打乱
num_workers:采用多进程
drop_last:true表示省去最后除不尽的数据
Module:所有神经网络模块都要继承nn.Module
基本框架:
class Model(nn.Module):
def __init__(self):
super(Model,self).__init__()
自定义代码块
def forward(self,x)#神经网络的运算函数
自定义代码块
nn.conv2d:
权重=卷积核
stride=卷积核的步长,可以是一个数,或者是一个元组(横,纵)
import torch
import torch.nn.functional as F
input=torch.tensor([[1,2,0,3,3],
[0,1,2,3,1],
[1,2,1,0,0],
[5,2,3,1,1],
[2,1,0,1,1]])
kernel= torch.tensor([[1,2,1],
[0,1,0],
[2,1,0]])
input = torch.reshape(input,(1,1,5,5))#代表输入输出的通道
kernel = torch.reshape(kernel,(1,1,5,5))
output = F.conv2d(input,kernel,stride)
padding:输入的边缘填充
作用:保证数据的特征,减少数据量
kernel_size:池化核
stride:默认值是kernel_size
dilation: 核元素中间插一个
ceil_model:边缘的池化值是否保留
作用:为神经网络引入非线性的特质
nn.relu
nn.sigmoid
参数:对原来的变量是否进行变换;
作用:加快神经网络的训练速度12232651