如何修复 "Boolean value of Tensor with more than one value is ambiguous"?

How to fix "Boolean value of Tensor with more than one value is ambiguous"?

我正在尝试创建一个模型,但我收到一个运行时错误“具有多个值的 Tensor 的布尔值不明确”。我已经搜索过关于此的其他帖子,但可以找到一个可行的解决方案,所以这是我自己的尝试。

我正在学习教程,该教程使用数据教程集。 代码如下所示:

#%% import file

df = pd.read_csv('coordinates.csv', sep='\;', engine='python')
df

#%% cleanup

df=df[[ 'CATEGORY','LEFT_ANGLE']]
print(df)
df.apply(pd.to_numeric)

#%%

from tkinter import Variable
import numpy as np
from sklearn.preprocessing import MinMaxScaler


def sliding_windows(data, seq_length):
    x = []
    y = []

    for i in range(len(data)-seq_length-1):
        _x = data[i:(i+seq_length)]
        _y = data[i+seq_length]
        x.append(_x)
        y.append(_y)

    return np.array(x),np.array(y)

#%%

sc = MinMaxScaler()
training_data = sc.fit_transform(df)

seq_length = 4
x, y = sliding_windows(training_data, seq_length)

train_size = int(len(y) * 0.67)
test_size = len(y) - train_size

dataX = Variable(torch.Tensor(np.array(x)))
dataY = Variable(torch.Tensor(np.array(y)))

trainX = Variable(torch.Tensor(np.array(x[0:train_size])))
trainY = Variable(torch.Tensor(np.array(y[0:train_size])))

testX = Variable(torch.Tensor(np.array(x[train_size:len(x)])))
testY = Variable(torch.Tensor(np.array(y[train_size:len(y)])))

这是我想用于训练的 DataFrame 和错误:

[300 rows x 2 columns]
6
CATEGORY    LEFT_ANGLE
0   0   160
1   0   162
2   0   160
3   0   157
4   0   146
... ... ...
295 4   163
296 4   176
297 4   132
298 4   150
299 4   176
300 rows × 2 columns

Cleanup done

---------------------------------------------------------------------------

RuntimeError                              Traceback (most recent call last)

<ipython-input-12-2bfe2346f838> in <module>
      8 test_size = len(y) - train_size
      9 
---> 10 dataX = Variable(torch.Tensor(np.array(x)))
     11 dataY = Variable(torch.Tensor(np.array(y)))
     12 


    331             raise TypeError("name must be a string")
    332         global _varnum
--> 333         if not master:
    334             master = _default_root
    335         self._root = master._root()

RuntimeError: Boolean value of Tensor with more than one value is ambiguous

首先,我不明白 class 变量的用途以及张量为什么不接受我的数组。我希望有一个人可以帮助我。 如果我的英语不是最好的,请提前致谢。

简答:
删除 Variable()

解释:
我相信你的答案就在你的问题中。如果您不知道 Variable 是什么,为什么要使用它?但更重要的是,您是从 tkinter 导入它的,这是一个接口包,我很确定这不是您想要的。

你想要的是使用火炬中的那个。 我在文档中寻找它,但它实际上已被弃用,来自 torch 的 Variable() API 现在 returns 是一个 Tensor,所以它不再有用了。 see here