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个“_”,添加后即可查看。