ShusenTang / Dive-into-DL-PyTorch

本项目将《动手学深度学习》(Dive into Deep Learning)原书中的MXNet实现改为PyTorch实现。
http://tangshusen.me/Dive-into-DL-PyTorch
Apache License 2.0
18.17k stars 5.38k forks source link

3.6_softmax-regression-scratch.ipynb 运行错误 #134

Open davidwang9527 opened 4 years ago

davidwang9527 commented 4 years ago

bug描述 3.6_softmax-regression-scratch.ipynb "3.6.8 预测"下的cell运行错误: RuntimeError Traceback (most recent call last)

in 2 3 true_labels = d2l.get_fashion_mnist_labels(y.numpy()) ----> 4 pred_labels = d2l.get_fashion_mnist_labels(net(X).argmax(dim=1).numpy()) 5 titles = [true + '\n' + pred for true, pred in zip(true_labels, pred_labels)] 6 RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead. 原版本: pytorch:0.4.1 torchvision:0.2.1 **版本信息** pytorch:1.5.0 torchvision:0.6.0 torchtext: ...
davidwang9527 commented 4 years ago

该cell的代码改为如下代码可避免报错: X, y = iter(test_iter).next()

true_labels = d2l.get_fashion_mnist_labels(y.detach().numpy()) pred_labels = d2l.get_fashion_mnist_labels(net(X).argmax(dim=1).detach().numpy()) titles = [true + '\n' + pred for true, pred in zip(true_labels, pred_labels)]

d2l.show_fashion_mnist(X[0:9], titles[0:9])

ShusenTang commented 4 years ago

该cell的代码改为如下代码可避免报错: X, y = iter(test_iter).next()

true_labels = d2l.get_fashion_mnist_labels(y.detach().numpy()) pred_labels = d2l.get_fashion_mnist_labels(net(X).argmax(dim=1).detach().numpy()) titles = [true + '\n' + pred for true, pred in zip(true_labels, pred_labels)]

d2l.show_fashion_mnist(X[0:9], titles[0:9])

嗯,应该是新版本的PyTorch不支持call numpy() on Variable that requires grad了,后续会修正,感谢指出。

wang321123 commented 4 years ago

是的,我今天也遇到了这样的问题。