RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling cublasCreate(handle)
问题
- 问题:return F.linear(input, self.weight, self.bias)
RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when callingcublasCreate(handle)
- 背景:我的数据是时间序列数据,我先对数据进行了nn.Embedding,之后再将数据送入nn.Linear。
- 结论:序列数据范围太广,使用nn.Embedding,一定要设置足够的词表大小。或者按照一般序列处理模型,使用nn.Linear或conv1d对数据进行embedding。
- 解决思路:
1、网上搜索:一些说是内存,改了batch_size没有用;一些说可以先试试CPU
2、解决:仔细检查,我发现数据在Embedding前是可以正常做linear。然后看数据在embeding前后变化:
前:
后:
然后再去查这个问题:
https://stackoverflow.com/questions/63518688/pytorch-after-embedding-layer-unable-to-get-repr-for-class-torch-tensor
发现是数据范围太广,直接用embed范围设置不足,产生的后果。