1 问题
深度学习中,数据很多,不能一次性把数据全都放到模型中进校训练,所以利用数据加载,进行顺序打乱,分批,预处理之类的操作
2 方法
使用pytorch提供的
Dataset(数据集类)(获取数据位置和个数)
train=datasets.MNIST(root='data',download=False,train=True,transform=ToTensor())
test=datasets.MNIST(root='dada',download=True,train=False,transform=ToTensor())
transform=Torensor() 把[0,255]的PIL.Image文件从 (H x W x C)形状转换为 (C x H x W) 的tensor。
DataLoader(数据加载器类):
1.传入dataset
2.batch_size 批大小
3.shuffle 数据打乱
train_loader=DataLoader(dataset=train,batch_size=128,shuffle=True)
test_loader = DataLoader(dataset=test, batch_size=128)
构造一个两到三层的神经网络,因为minsit数据不是很复杂,所以层数对数据的效果没有太大的影响。
class MyNet(nn.Module):
def __init__(self) -> None:
super().__init__()
self.flatten = nn.Flatten() # 将28*28的图像拉伸为784维向量
# 第一个全连接层Full Connection(FC)
self.fc1 = nn.Linear(in_features=784,
out_features=512)
self.fc2 = nn.Linear(in_features=512,
out_features=256)
self.fc3 = nn.Linear(in_features=256,
out_features=10)
3 结语
minist是一个28*28的图像,所以输入就是28*28=784的维度,输出为10,0-9十个数字。
经过以上的操作就是对minsit数据的一个简单处理,为接下来的深度学习做准备。