Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何修复”;TypeError:数据类型不可理解“;在numpy中创建变压器时无峰值遮罩_Python_Numpy_Deep Learning_Pytorch - Fatal编程技术网

Python “如何修复”;TypeError:数据类型不可理解“;在numpy中创建变压器时无峰值遮罩

Python “如何修复”;TypeError:数据类型不可理解“;在numpy中创建变压器时无峰值遮罩,python,numpy,deep-learning,pytorch,Python,Numpy,Deep Learning,Pytorch,我试图通过一篇博客文章为NMT实现和培训一个转换器,除了我无法创建无峰值掩码外,其他一切都正常,因为我遇到了以下错误:“TypeError:数据类型不可理解” 代码: target\u seq=batch.Python.transpose(0,1) target_pad=PY_TEXT.vocab.stoi[“”] target_msk=(target_seq!=target_pad)。取消查询(1) 大小=目标大小(1)#获取矩阵的大小 nopeak_mask=np.triu(np.one(1

我试图通过一篇博客文章为NMT实现和培训一个转换器,除了我无法创建无峰值掩码外,其他一切都正常,因为我遇到了以下错误:“TypeError:数据类型不可理解”

代码:

target\u seq=batch.Python.transpose(0,1)
target_pad=PY_TEXT.vocab.stoi[“”]
target_msk=(target_seq!=target_pad)。取消查询(1)
大小=目标大小(1)#获取矩阵的大小
nopeak_mask=np.triu(np.one(1,大小,大小),
k=1)。astype('uint8')
nopeak\u mask=变量(火炬从\u numpy(nopeak\u mask)==0)
target\u msk=target\u msk和nopeak\u mask
错误消息:

TypeError回溯(最近一次调用)
在()
4 target_msk=(target_seq!=target_pad)。取消查询(1)
5尺寸=目标尺寸(1)#获得矩阵的尺寸
---->6 nopeak_mask=np.triu(np.one(1,大小,大小),
7 k=1).aType('uint8')
8 nopeak\u mask=变量(火炬从\u numpy(nopeak\u mask)==0)
~/.local/lib/python3.6/site-packages/numpy/core/numeric.py(形状、数据类型、顺序)
201
202     """
-->203 a=空(形状、数据类型、顺序)
204 multiarray.copyto(a,1,casting='unsafe')
205返回a
TypeError:无法理解数据类型

np.triu
的第一个输入应该是所需大小的元组,而不是numpy数组

尝试:


问题是在使用np.ones()功能时没有给出元组

尝试:

它在我的情况下非常有效,希望对你的情况也有帮助
:)

np.ones的第一个参数应该是大小的元组:
np.ones((1,size,size))
。按照您编写的方式,
size
被解释为dtype,这是
np.ones
的第二个参数。请注意错误如何指向
np.empty
函数调用,具有相同的要求-
形状、dtype、顺序
@hpaulj谢谢,感谢您的解释。
np.triu((1, size, size), k=1).astype("uint8")
nopeak_mask = np.triu(np.ones((1, size, size)), k=1).astype("uint8")