深度学习代码错误随记

1.在PyTorch 0.4.0之后,推荐使用tensor.item()来获取标量张量的值

2.描述:Traceback (most recent call last): File "/home/xc/PycharmProjects/Liuyafei/test2.py", line 60, in <module> plt.plot(x_train.numpy(), predict, label='Fitting Line') TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

解决办法:这个错误是因为你试图将一个在GPU上的tensor转换为numpy数组,但是这是不可能的。你需要先将tensor转移到CPU上,然后再转换为numpy数组。你可以使用.cpu()方法来实现这一点。修改后的代码如下:

plt.plot(x_train.cpu().numpy(), predict.cpu().numpy(), label='Fitting Line')

 3.描述:

Traceback (most recent call last): File "/home/xc/PycharmProjects/Liuyafei/test2.py", line 59, in <module> plt.plot(x_train.numpy(), y_train.numpy(), 'ro', label='Original data') File "/home/xc/anaconda3/envs/share_env/lib/python3.8/site-packages/matplotlib/_api/__init__.py", line 222, in __getattr__ raise AttributeError( AttributeError: module 'matplotlib' has no attribute 'plot'

解决办法:你需要将import matplotlib as plt更改为import matplotlib.pyplot as plt,因为plot函数是在pyplot模块中定义的。修改后的代码如下:

import matplotlib.pyplot as plt

4.问题描述:Traceback (most recent call last): File "/home/xc/PycharmProjects/Liuyafei/Logistic/Logistic_test.py", line 77, in <module> plot_y = (-w0 * plot_x - b) / w1 TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'Tensor'

解决办法:这个错误是因为在计算 plot_y 时,尝试将一个 numpy 数组(plot_x)与一个 PyTorch 张量(w0b)进行运算。为了解决这个问题,你需要将 w0w1b 转换为 numpy 数组,然后再进行计算。你可以使用 .detach().cpu().numpy() 方法将 PyTorch 张量转换为 numpy 数组。以下是修改后的代码:

# ...
w0, w1 = logistic_model.lr.weight[0]
w0 = w0.item()
w1 = w1.item()
b = logistic_model.lr.bias.data[0].item()
plot_x = np.arange(30, 100, 0.1)
plot_y = (-w0 * plot_x - b) / w1
plt.plot(plot_x, plot_y)
plt.show()

这样修改后,代码应该可以正常运行并显示逻辑回归模型的决策边界。

5.问题描述:Traceback (most recent call last): File "/home/xc/PycharmProjects/Liuyafei/Logistic/Logistic_test.py", line 57, in <module> loss = criterion(out, y) File "/home/xc/anaconda3/envs/share_env/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl return forward_call(*input, **kwargs) File "/home/xc/anaconda3/envs/share_env/lib/python3.8/site-packages/torch/nn/modules/loss.py", line 613, in forward return F.binary_cross_entropy(input, target, weight=self.weight, reduction=self.reduction) File "/home/xc/anaconda3/envs/share_env/lib/python3.8/site-packages/torch/nn/functional.py", line 3074, in binary_cross_entropy raise ValueError( ValueError: Using a target size (torch.Size([18])) that is different to the input size (torch.Size([18, 1])) is deprecated. Please ensure they have the same size.

解决方法:这个错误是因为在计算损失时,输入和目标的大小不匹配。在这个例子中,out 的大小是 [18, 1],而 y 的大小是 [18]。为了解决这个问题,你需要将 y 转换为与 out 相同的形状。你可以使用 torch.unsqueeze() 函数来实现这一点。修改后的代码如下:

out = logistic_model(x)
y = y.unsqueeze(1)  # Add a dimension to y to match the shape of out
loss = criterion(out, y)

6.Traceback (most recent call last):
  File "/home/xc/PycharmProjects/Liuyafei/MNIST/net.py", line 18, in <module>
    train_dataset = datasets.MNIST(
TypeError: __init__() got an unexpected keyword argument 'transforms'

这个错误是因为在创建MNIST数据集时,传入了一个不支持的关键字参数'transforms'。要解决这个问题,你需要将'transforms'参数替换为正确的参数名。在PyTorch中,MNIST数据集的正确参数名是'transform'。

7.

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值