我正试图创建一个模型,但我得到了一个RuntimeError"具有一个以上值的张量的布尔值是不明确的";。我已经在其他帖子上搜索过了,但可以找到一个有效的解决方案,所以这是我自己的尝试。
我正在学习一个教程,该教程使用教程数据集。代码如下:
#%% 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
首先,我不明白类Variable是用来做什么的,也不明白张量为什么不接受我的数组。我希望有人能帮助我。提前谢谢,如果我的英语不是最好的,我很抱歉。
简短回答:
删除Variable()
解释:
我相信你的答案就在你的问题中。如果您不知道变量是什么,为什么要使用它?但更重要的是,您正在从tkinter
导入它,这是一个接口包,我很确定这不是您想要的。
你想要的是用火炬里的那个。我在文档中寻找它,但它实际上已被弃用,torch中的Variable()
API现在返回Tensor,因此不再有用。参见此处