好的,我用的jupyter 没法debug,不过很感谢你的解答
在使用3.6 的custom crossentropy function 时候 cost matrix 会出现大量nan, 猜测是梯度爆炸导致上溢,是不是relu + cross entrophy 所导致,但是pytorch.crossentrophy却很好的deal with nan
我觉得你检查一下你的参数初始化设置的时候是不是有问题。
我也是遇到这个问题,请问应该怎么解决呢?
我这是读取数据的进程太大的原因,把load_data_fashion_mnist函数从库里复制出来改改,把num_workers改成0或者1试试,我这样解决了,沐神的程序给的是4,可能会是我电脑不大行了
我查阅资料发现可以修改loss函数的输出维度,把nn.CrossEntropyLoss()里的内容去掉,就可以啦
要用l.sum.backward,不影响求梯度
所以看不见是正确的吗,上面有的看得见是为什么啊
loss=nn.CrossEntropyLoss(reduction=‘none’)
不用卸载 pip install --upgrade d2l就好了 现在已经到了0.17.5了
你是对的,我之前学着去源代码里面改来改去总是搞不对,用你的这两行代码一下就搞定了
最后不是应该有个softmax的吗 ,请问这里是加了 还是没加
第二个问题:应该是更改安装的d2l库中的torch.py文件吧
我的位置在C:\Users\microsate\AppData\Roaming\Python\Python39\site-packages\d2l
为啥我做了跟你一样的test4,增加了64个隐藏单元的第二个层,结果不一样呢?
num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 64
W1 = nn.Parameter(torch.randn(
num_inputs, num_hiddens1, requires_grad=True) * 0.01)
b1 = nn.Parameter(torch.zeros(num_hiddens1, requires_grad=True))
W2 = nn.Parameter(torch.randn(
num_hiddens1, num_hiddens2, requires_grad=True) * 0.01)
b2 = nn.Parameter(torch.zeros(num_hiddens2, requires_grad=True))
W3 = nn.Parameter(torch.randn(
num_hiddens2, num_outputs, requires_grad=True) * 0.01)
b3 = nn.Parameter(torch.zeros(num_outputs, requires_grad=True))
params = [W1, b1, W2, b2, W3, b3]
看评论区,出这个问题DataLoader worker (pid(s) 27196, 9688, 1548, 28164) exited unexpectedly。用这个train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
test_iter.num_workers = 0
train_iter.num_workers = 0
出这个问题RuntimeError:grad。将loss = nn.CrossEntropyLoss() #书中loss = nn.CrossEntropyLoss(reduction=‘none’)
实测自己已经解决
You should set the param “reductoin” in CrossEntropy with “mean”
是不是开启了代理?关闭代理会对这种情况有所帮助。