经过了两天的摸索,对于这个问题,终于圆满的解决了,对于一个深度学习的小白来说,面对这样的问题,实在太难受了。
在这几天里,不断去找一些博客的经验,很多都说把num_workers设置为0,但是却没有具体的关于如何设置的教程,使我在这个问题上特别难受。现在终于找到了解决办法了,希望能帮助到有同样问题的朋友。
由于在windows中是不能使用多个子进程加载数据的,在linux系统中可以。所以在windows中要将num_workers设置为0的。
具体怎么做呢,请往下看:
本文的例子问李沐老师的深度学习的示例(Lenet):
代码如下:
import torch
from torch import nn
from d2l import torch as d2l
from torch.utils import data
class Reshape(torch.nn.Module):
def forward(self,x):
return x.view(-1,1,28,28)
net = torch.nn.Sequential(
Reshape(),nn.Conv2d(1,6,kernel_size=5,padding=2),nn.Sigmoid(),
nn.AvgPool2d(2,stride=2),
nn.Conv2d(6,16,kernel_size=5),nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2,stride=2),nn.Flatten(),#把低维保持,高维的拉成一维,最终为一维向量
nn.Linear(16*5*5,120),nn.Sigmoid(),
nn.Linear(120,84),nn.Sigmoid(),
nn.Linear(84,10)
)
X = torch.rand(size=(1,1,28,28),dtype=torch.float32)
for layer in net:
X = layer(X)
#print(layer.__class__.__name__,'output shap