在读取csv文件时提示stockFilePathName = D:\BlackOp\Source\QuantitativeTrade\DataBase\ChinStockHistoryInfo\000003.csv financialPathFileName = D:\BlackOp\Source\QuantitativeTrade\DataBase\ChinFinancialHistoryInfo\000003.csv Traceback (most recent call last): File "D:\BlackOp\Source\QuantitativeTrade\Source\DataAnalyze.py", line 75, in <module> data = CalAnalyzeRst(stockDataPath, financialDataPath) File "D:\BlackOp\Source\QuantitativeTrade\Source\DataAnalyze.py", line 38, in CalAnalyzeRst inputDataSet = GeneratorInputData(stockId, stockDataPath, financialDataPath) File "D:\BlackOp\Source\QuantitativeTrade\Source\DataAnalyze.py", line 54, in GeneratorInputData data = torch.cat((stockDate.unsqueeze(1), data), dim = 1) TypeError: expected Tensor as element 1 in argument 0, but got NoneType是什么意思
时间: 2023-07-17 09:04:42 浏览: 148
这个错误提示说明在 torch.cat() 函数的第一个参数中,期望传入一个张量(Tensor),但实际传入的是 NoneType 类型的对象。
根据你提供的代码和错误信息,我可以推断出可能的原因是 stockDate 对象为 None。请检查 GeneratorInputData() 函数中的 stockDate 变量的赋值部分,确保 stockDate 变量被正确初始化并且不为 None。
另外,还要确保 data 变量也不为 None,因为在 torch.cat() 函数中将 stockDate 和 data 进行拼接操作。
你可以检查以下几个方面:
1. 确保传递给 GeneratorInputData() 函数的 stockDataPath 和 financialDataPath 参数是正确的文件路径,并且这些文件存在且可读。
2. 在读取 CSV 文件时,确认读取操作成功,并且正确地将数据存储到 stockDate 和 data 对象中。
3. 检查生成 stockDate 和 data 对象的代码,确保没有错误导致它们为 None。
通过检查这些方面,你应该能够找到引发这个错误的原因,并解决它。
相关问题
def GetExpectGainData(inputDataSet): expectGainData = torch.zeros(inputDataSet.shape[0]) if not IsMatrix(inputDataSet): print('GetExpectGainData inputDataSet is not a matrix') return expectGainData trainDateArray = GetTrainDateArray(); trainData = [] for trainDate in trainDateArray: currentTrainData = MergeTargetValByCol(inputDataSet, 0, trainDate) trainData = torch.cat((trainData, currentTrainData), dim = 0) labelData = trainData[:, 2] labelData = labelData[1, :] newDayData = inputDataSet[torch.LongTensor([array1.shape[0]]) - 1] labelData = torch.cat(labelData, newDayData[2]) print(trainData) print(labelData) 000004.csv Traceback (most recent call last): File "D:\BlackOp\Source\QuantitativeTrade\Source\DataAnalyze.py", line 97, in <module> File "D:\BlackOp\Source\QuantitativeTrade\Source\DataAnalyze.py", line 39, in CalAnalyzeRst expectGainData = GetExpectGainData(inputDataSet) File "D:\BlackOp\Source\QuantitativeTrade\Source\DataAnalyze.py", line 77, in GetExpectGainData trainData = torch.cat((trainData, currentTrainData), dim = 0) TypeError: expected Tensor as element 0 in argument 0, but got list
根据您提供的代码,出现了一个错误。错误提示是`TypeError: expected Tensor as element 0 in argument 0, but got list`,这意味着在使用torch.cat()函数时,传入了一个列表而不是张量。
请注意,在使用torch.cat()函数时,传入的参数应为张量。根据您的代码,`trainData`被初始化为一个空列表,而不是一个张量。为了解决这个问题,您可以将`trainData`初始化为一个空的张量,然后使用torch.cat()函数将新的训练数据添加到其中。
修改后的代码如下所示:
```python
def GetExpectGainData(inputDataSet):
expectGainData = torch.zeros(inputDataSet.shape[0])
if not IsMatrix(inputDataSet):
print('GetExpectGainData inputDataSet is not a matrix')
return expectGainData
trainDateArray = GetTrainDateArray()
trainData = torch.tensor([]) # 初始化为一个空张量
for trainDate in trainDateArray:
currentTrainData = MergeTargetValByCol(inputDataSet, 0, trainDate)
trainData = torch.cat((trainData, currentTrainData), dim=0)
labelData = trainData[:, 2]
labelData = labelData[1, :]
newDayData = inputDataSet[torch.LongTensor([array1.shape[0]]) - 1]
labelData = torch.cat((labelData, newDayData[2])) # 将newDayData[2]添加到labelData中
print(trainData)
print(labelData)
```
这样修改后,`trainData`将会被正确地初始化为一个空张量,并且可以使用torch.cat()函数将新的训练数据添加到其中。同样,我还在最后一行代码中修复了另一个错误,将`torch.cat(labelData, newDayData[2])`修改为`torch.cat((labelData, newDayData[2]))`来正确地将`newDayData[2]`添加到`labelData`中。
希望这可以解决您遇到的问题。如果还有其他问题,请随时提问。
(base) D:\BlackOp\Source\QuantitativeTrade\Source> (base) D:\BlackOp\Source\QuantitativeTrade\Source>python test.py Traceback (most recent call last): File "D:\BlackOp\Source\QuantitativeTrade\Source\test.py", line 90, in <module> model.TrainTransformerModule(num_epochs) File "D:\BlackOp\Source\QuantitativeTrade\Source\test.py", line 40, in TrainTransformerModule outputs = self.forward(batch_inputs) File "D:\BlackOp\Source\QuantitativeTrade\Source\test.py", line 19, in forward x = self.embedding(x) File "D:\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_impl return forward_call(*input, **kwargs) File "D:\Anaconda3\lib\site-packages\torch\nn\modules\sparse.py", line 160, in forward return F.embedding( File "D:\Anaconda3\lib\site-packages\torch\nn\functional.py", line 2210, in embedding return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse) RuntimeError: Expected tensor for argument #1 'indices' to have one of the following scalar types: Long, Int; but got torch.cuda.FloatTensor instead (while checking arguments for embedding)
这个错误是由于在调用 `torch.embedding()` 函数时,输入的索引张量类型不正确导致的。函数要求索引张量的数据类型是 `torch.LongTensor` 或者 `torch.IntTensor`,但是你传入的索引张量的数据类型是 `torch.cuda.FloatTensor`。
为了解决这个问题,你需要将索引张量的数据类型转换为正确的类型。可以使用 `torch.tensor()` 函数将数据类型转换为 `torch.LongTensor`,如下所示:
```python
x = torch.tensor(x, dtype=torch.long)
```
在你的代码中,可能需要对 `batch_inputs` 进行相应的转换,具体取决于你在哪里使用了该张量作为索引。
确保在调用 `torch.embedding()` 函数之前,将索引张量的数据类型正确转换为 `torch.LongTensor` 或者 `torch.IntTensor`,这样就可以解决这个错误。
阅读全文