Torchvision transforms.toPILImage() TypeError: function takes exactly 1 argument (3 given)
Torchvision transforms.toPILImage() TypeError: function takes exactly 1 argument (3 given)
来自蟒蛇
枕头 -> 7.00
火炬视觉 -> 0.5.0
我今天为 Linux(Anaconda3-2020.02-Linux-x86_64.sh) 安装了最新的 Anaconda,我 运行 以下命令,
conda create -n py36 python=3.6
conda activate py36
conda install -c pytorch torchvision
conda install -c pytorch pytorch
conda install -c conda-forge opencv
conda install -c conda-forge python-pptx
conda install -c conda-forge labelme
conda install -c conda-forge tensorboardx
conda install -c anaconda ipywidgets
conda install -c conda-forge ipyvolume
conda install -c conda-forge jupyter_contrib_nbextensions
conda install -c anaconda pytables
jupyter-notebook
运行 与我运行几个月来一直使用的完全相同的代码,
# visualize a single example to verify that it is correct
( img, patch_mask, patch_mask_weight, fname) = dataset[ "train"][ 70]
我收到以下错误,
如何解决?如果需要更多代码,请告诉我。
更新我
显示的代码对两个 RGB 图像和一个标签图像应用了一系列变换,标签图像分别具有唯一值 0、1、2,用于背景、前景和深度学习训练期间要忽略的区域。下面的输出来自在上面显示的错误跟踪中显示的代码中添加的 print
语句。
看起来对于第一个 RGB 图像一切正常,而对于标签图像则存在问题。具体来说,旋转变换是有问题的,其中 color
属性具有一个元组作为值。不过,ToPILImage 转换中的相同属性具有单个整数值。
谢谢
调用转换 RandomRotation
并创建 Image
class 的新实例时出现错误。特别是,函数 core.fill()
在函数 new
的第 2544 行 return im._new( core.fill(mode, size, color))
,在文件 anaconda3/envs/py36/lib/python3.6/site-packages/PIL/Image.py
中是 'evil'.
的来源
core
是文件 anaconda3/envs/py36/lib/python3.6/site-packages/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so
的别名,当在同一文件 (Image.py).
的第 69 行作为 from . import _imaging as core
导入时
函数 core.fill(mode, size, color))
取决于 mode
对 color
有不同的期望。 color
始终是一个 3 - 元组,文件 anaconda3/envs/py36/lib/python3.6/site-packages/torchvision/transforms/functional.py
中的第 726 - 727 行,函数 rotate
即 RandomRotation
transform.
如果mode == RGB
一切正常。如果 mode == L
则引发 TypeError: function takes exactly 1 argument (3 given)
。如果 mode == F
,则引发 TypeError: must be real number, not tuple
。我发现鉴于我的图像正在转换中。
对于mode in [ 'L', 'F']
,参数color
需要是一个整数。对于其他 mode
可能也是如此。
因此,我通过将代码更新为
解决了我的问题
if mode in [ 'L', 'F'] and isinstance( color, tuple):
color = color[ 0]
return im._new( core.fill(mode, size, color))
在文件 anaconda3/envs/py36/lib/python3.6/site-packages/PIL/Image.py
中,函数 new
。
此更改最接近问题所在。但是,由于 new
似乎用于每个转换,因此最好在其他地方更改代码,以便更改对其余代码的影响尽可能小。
来自蟒蛇 枕头 -> 7.00 火炬视觉 -> 0.5.0
我今天为 Linux(Anaconda3-2020.02-Linux-x86_64.sh) 安装了最新的 Anaconda,我 运行 以下命令,
conda create -n py36 python=3.6
conda activate py36
conda install -c pytorch torchvision
conda install -c pytorch pytorch
conda install -c conda-forge opencv
conda install -c conda-forge python-pptx
conda install -c conda-forge labelme
conda install -c conda-forge tensorboardx
conda install -c anaconda ipywidgets
conda install -c conda-forge ipyvolume
conda install -c conda-forge jupyter_contrib_nbextensions
conda install -c anaconda pytables
jupyter-notebook
运行 与我运行几个月来一直使用的完全相同的代码,
# visualize a single example to verify that it is correct
( img, patch_mask, patch_mask_weight, fname) = dataset[ "train"][ 70]
我收到以下错误,
如何解决?如果需要更多代码,请告诉我。
更新我
显示的代码对两个 RGB 图像和一个标签图像应用了一系列变换,标签图像分别具有唯一值 0、1、2,用于背景、前景和深度学习训练期间要忽略的区域。下面的输出来自在上面显示的错误跟踪中显示的代码中添加的 print
语句。
看起来对于第一个 RGB 图像一切正常,而对于标签图像则存在问题。具体来说,旋转变换是有问题的,其中 color
属性具有一个元组作为值。不过,ToPILImage 转换中的相同属性具有单个整数值。
谢谢
调用转换 RandomRotation
并创建 Image
class 的新实例时出现错误。特别是,函数 core.fill()
在函数 new
的第 2544 行 return im._new( core.fill(mode, size, color))
,在文件 anaconda3/envs/py36/lib/python3.6/site-packages/PIL/Image.py
中是 'evil'.
core
是文件 anaconda3/envs/py36/lib/python3.6/site-packages/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so
的别名,当在同一文件 (Image.py).
from . import _imaging as core
导入时
函数 core.fill(mode, size, color))
取决于 mode
对 color
有不同的期望。 color
始终是一个 3 - 元组,文件 anaconda3/envs/py36/lib/python3.6/site-packages/torchvision/transforms/functional.py
中的第 726 - 727 行,函数 rotate
即 RandomRotation
transform.
如果mode == RGB
一切正常。如果 mode == L
则引发 TypeError: function takes exactly 1 argument (3 given)
。如果 mode == F
,则引发 TypeError: must be real number, not tuple
。我发现鉴于我的图像正在转换中。
对于mode in [ 'L', 'F']
,参数color
需要是一个整数。对于其他 mode
可能也是如此。
因此,我通过将代码更新为
解决了我的问题if mode in [ 'L', 'F'] and isinstance( color, tuple):
color = color[ 0]
return im._new( core.fill(mode, size, color))
在文件 anaconda3/envs/py36/lib/python3.6/site-packages/PIL/Image.py
中,函数 new
。
此更改最接近问题所在。但是,由于 new
似乎用于每个转换,因此最好在其他地方更改代码,以便更改对其余代码的影响尽可能小。