【问题标题】:A.t().mm(self.linear4.weight.t()) ->error: out of range at THTensor.cppA.t().mm(self.linear4.weight.t()) ->error: out of range at THTensor.cpp
【发布时间】:2021-11-15 12:21:02
【问题描述】:

在 PyTorch 中运行 AutoEncoder 模型时,我发现了一个奇怪的错误。

我的代码:

model = AutoEncoder(num_items, args.inner_layers, num_items, da=args.num_attention, dropout_rate=args.dropout_rate)

item_vector = self.linear1.weight[:, T.LongTensor(batch_item_index[0].astype(np.int32))]

inner_product = item_vector.t().mm(self.linear4.weight.t())

在看到一些类似的小问题(https://github.com/jwyang/faster-rcnn.pytorch/issues/311)中批量索引的原因是-1的解释后,我尝试让索引从0开始,但没有奏效。

这是我第一次在 Stack Overflow 上没有类似的问题,我做错了什么?

Traceback (most recent call last):
  File "run.py", line 155, in <module>
    main()
  File "run.py", line 151, in main
    train_autoencoder(train_matrix, test_set)
  File "run.py", line 86, in train_autoencoder
    y_pred = model(batch_item_index, place_correlation)
  File "C:\Users\user\anaconda3\envs\saenad\lib\site-packages\torch\nn\modules\module.py", line 491, in __call__
    result = self.forward(*input, **kwargs)
  File "C:\Users\user\saenad\model.py", line 58, in forward
    inner_product = item_vector.t().mm(self.linear4.weight.t())
RuntimeError: invalid argument 1: out of range at c:\programdata\miniconda3\conda-bld\pytorch_1524543037166\work\aten\src\th\generic/THTensor.cpp:454**

【问题讨论】:

  • item_vectorself.linear4.weight.shape是什么?
  • 感谢您的回答。项向量形状为 (200, 16)。当我打印 item_vector 时, tensor(1.00000e-03 * [[ 1.6500, ..., -5.2615],... [-1.2557, ..., 4.1297]]) 我发现“ item_vector.t() ”发生错误..但我找不到解决方案..

标签: python pytorch autoencoder


【解决方案1】:

我发现 item_vector 是空张量([[]])! 所以我添加了处理异常的代码,如果 item_vector.Size 为 0,下面的代码。

if item_vector.shape == torch.Size([0]): 
   continue

希望这可以帮助遇到同样错误的人。:)

【讨论】:

    猜你喜欢
    • 2018-02-08
    • 2013-04-27
    • 2021-03-25
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    相关资源
    最近更新 更多