net = nn.Sequential(nn.Flatten(), nn.Linear(784, 256), nn.ReLU(), nn.Linear(256, 10))

错误如下:

AttributeError                            Traceback (most recent call last)
<ipython-input-9-8c5bb5713b8a> in <module>
----> 1 net = nn.Sequential(nn.Flatten(), nn.Linear(784, 256), nn.ReLU(),
      2                     nn.Linear(256, 10))
      4 def init_weights(m):
      5     if type(m) == nn.Linear:
AttributeError: module 'torch.nn' has no attribute 'Flatten'

原因是因为使用的Pytorch1.0.0版本,没有定义Flatten函数。

2.解决方法过程

过程包括试错部分,可跳转到 3.总结 直接看如何操作。

最简单的就是更新Pytorch版本即可,但由于我以前安装为了适应GPU版本等兼容问题,不更新Pytorch版本采用第二个方案。

思路灵感来自 axis 报错在对应文件找到对应错误代码将 axis 替换成 dim 即可

那么既然缺少Flatten函数,那就给它补上。找到1.9.0版本的Pytorch下载

https://github.com/pytorch/pytorch/releases

D:\pytorch-1.9.0\pytorch-1.9.0\torch\nn\modules

文件里面找到 flatten.py 文件

再找到本地安装的位置,我使用的Anaconda安装的,将在其 flatten.py 文件拷贝到Anaconda安装对应的文件的夹里。例如下:

D:\Anaconda3\Lib\site-packages\torch\nn\modules

同时在此文件夹中找到__init__.py文件按照最新版本中的对应文件加入如下代码:

from .flatten import Flatten, Unflatten

以及在__all__ = 中加入对应代码

'Flatten',

如下图所示:

重新运行会提示错误:

ModuleNotFoundError: No module named 'torch.types'

通过查询找到1.9.0版本的 types.py 文件在 D:\pytorch-1.9.0\pytorch-1.9.0\torch 中

将其 复制 到本地安装位置D:\Anaconda3\Lib\site-packages\torch

再次运行又提示错误:

     19 _dtype = torch.dtype
     20 _device = torch.device
---> 21 _qscheme = torch.qscheme
     22 _size = Union[torch.Size, List[_int], Tuple[_int, ...]]
     23 _layout = torch.layout
AttributeError: module 'torch' has no attribute 'qscheme'

由于我没有在1.9.0版本找到qscheme.py,故在 types.py 中找到 21 行将其加上 ‘#’ 屏蔽

注:因为为没有需要用到torch.qscheme的情况故把它屏蔽了,如何后续需要用到,再找解决更新方法

运行成功结果如下:

方法一:更新Pytorch版本

方法二:在原来Pytorch版本上修改( 注: torch.qscheme会被屏蔽暂时未找解决方法,不使用此函数可尝试此方法 )

下载新版Pytorch版本

下载地址: https://github.com/pytorch/pytorch/releases

首先,解压找到目录D:xx\pytorch-1.9.0\pytorch-1.9.0\torch\nn\modules中的 flatten.py 文件复制到自己电脑安装的相同路径下。

其次,找到本地目录下的 __init__.py 文件,按照解压中对应的 __init__.py 文件添加

from .flatten import Flatten, Unflatten __all__ = 中添加 'Flatten', 即可。

最后,再找到解压目录下D:xx\pytorch-1.9.0\torch的 types.py 文件,同理将其复制,同时打开 types.py 文件找到21行的_qscheme = torch.qscheme将加上其‘ # ’屏蔽。

mnist_train = torch vision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', train=True, download=True, transform=transforms.ToTensor()) mnist_test = torch vision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', train=False, downl 参考:'tensorflow. python .layers.layers' has no attribute ' flatten ' torch 没有 flatten 这个函数,看来确定无疑是我的 PyTorch 0.4.0 版本 太老了。 需要更新 PyTorch ... import torch 出现错误: module torch ’ has no attribute 'from_numpy’ 刚接触 torch ,好不容易安装成功(pip install torch 1.5.1+cpu torch vision0.6.1+cpu -f https://download. pytorch .org/whl/ torch _stable.html),cpu 版本 ,打开发现这样 问题 module torch ’ has no attribute ‘from_numpy’ 心情很是糟糕,求助了淘 第一步,找到本地安装 pytorch 的路径,我是通过ANACONDA安装,路径如下 E:\2345Downloads\Anaconda\anaconda\envs\ pytorch 找到以下路径 E:\2345Downlo. 第一次用 PyTorch ,找了60分钟入门的教程跟着学 照着写了第一个demo就报错了,如下,和教程上的一模一样: from __future__ import print_function import torch x = torch .empty(5, 3) print(x) 找了很多解决方案,首先查看自己是否配置好环境了,在file—settings—Project Interpreter查看... 之所以会出现这个 问题 是自己没有弄清楚 nn .relu()函数和 nn .functional.relu函数的使用方法, nn .relu()作为一个层结构,必须添加到 nn . Module 容器中才能使用,而 nn .functional.relu则作为一个函数调用。这样单独用就不会报错了。... 这是因为 torch 1.8.1是最新版很多接口发生了变化下载旧 版本 可以解决这个 问题 。 pip install torch ==1. 1.0 torch vision==0.3.0 -f PyTorch : torch . nn .xxx 和 torch . nn .functional.xxx 在写 PyTorch 代码时,我们会发现在 torch . nn .xxx 和 torch . nn .functional.xxx 中有一些功能重复的操作,比如卷积、激活、池化。这些操作有什么不同?各有什么用处? 首先可以观察源码: eg: torch . nn .Conv2d CLASS torch .... 这个 问题 的原因是这个 版本 torch 中的 torch . nn 函数表里面没有这个SiLU函数,需要更高 版本 torch ,在官方的文档中我们就可以查看这个 版本 里有没有包含这个模块。ctrl+F跳出搜索框搜索需要的函数查不到就是没有了,因为cuda 版本 的限制,所以只能放弃,电脑太垃圾了呜呜呜。红框选择 torch 版本 ,我的 版本 是1. 1.0 ,搜索框里查函数 torch . nn 。 导入 torch 后,通过 torch .__version__语句查看时出现如标题所示的报错。在导入 torch 的geometric库前,需查看电脑安装的 torch 版本 。解决方法是version前后是2个“_”,添加后即可查看。