pytorch - 火炬堆栈产生错误的尺寸
问题描述
我对 pytorch 很陌生,我正在尝试在数据加载器中创建数据,我的代码如下所示:
a=[]
.. within a for loop
self.a.append(torch.stack([b[ith_idx][j], \
b[ith_idx][rnd_dist], \
b[rnd_cls_idx][rnd_dist_rnd_cls]]\
))
self.c.append([1,0])
其中,b 是张量的 python 列表。例如,第一个元素b
具有形状torch.Size([46, 3, 512, 512])
(3 个通道 512 x 512)。
self.a = torch.stack(self.a)
self.c = torch.tensor(self.c)
我注意到我有[500,3,3,512,512]
和 [500,2] 的形状a
和b
,而我期待500,3,3,512,512
和500
作为张量形状。
关于为什么会发生这种情况的任何指示都会有所帮助。
解决方案
的形状c
是因为您每次[500, 2]
都将两个值的列表附加到循环内部。如果您追加或迭代地追加,那么您将拥有一个元素列表。[1,0]
c
1
0
500
例如,您可以附加1
或0
随机如下:
self.c.append(np.random.randint(2)) # import numpy as np
或者
self.c.append(torch.randint(0,2,(1,)))
推荐阅读
- sql - Oracle 12c:我可以从 WITH 子句中调用一个函数,该函数既接受又返回一个表?
- javascript - 使用 tabletop.js 的传单地图中的标记为什么它不起作用?
- javascript - 在 rails 中使用 Vue 组件(带有 video.js)的问题
- swift - 创建一个Publisher,一一通知订阅者,相互等待
- android - Gradle 在 Windows 10 上的 Android Studio 3.5 中去了哪里?
- c# - reCAPTCHA V3 ASP.NET 框架实现
- node.js - 动态匹配变量MongoDB
- autodesk-forge - 是否有 API 来获取项目用户的服务访问权限?
- python-3.x - notimplementederror: can't perform this operation for unregistered loader type python : trying to convert py to .exe using cx_freeze
- javascript - 当有多个具有相同类名和属性名的元素时,获取一个元素的特定文本值