2018-07-17-pytorch-Expected-object-of-type-torch-DoubleTensor-argument

本文介绍了在使用PyTorch进行深度学习项目时遇到的TypeError问题:期望DoubleTensor但传入了FloatTensor。文章详细解释了问题的原因,并提供了解决方案,即确保模型权重与输入张量的数据类型保持一致。
部署运行你感兴趣的模型镜像
titlecategorylayouttagsdate
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'解决办法
dl
post
Pytorch
dl
2018-07-17 17:42:24
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'

今天遇到这个问题,一开始以为是输入的Tensor的问题,后来一检查发现是Model中的weight的数据类型跟输入不同的关系。

输入的是DoubleTensor类型,而模型默认的是FloatTensor类型,导致数据类型不一致报错。

解决的办法就是在模型创建和输入的时候统一数据类型,比如:

		self.cnn7=torch.nn.Conv2d(1, 1, (7,100), stride=(1,1),padding=(3,0)).float()
		self.linear=torch.nn.Linear(3,2).float()

另外值得注意的一点是FloatTensor在CPU中的执行效率比DoubleTensor更高。因为尽量采用FloatTensor类型。

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

### 如何解决 PyTorch 'expected a non-empty list of Tensors' 错误 当遇到 `RuntimeError: invalid argument 2: non-empty vector or matrix expected` 这样的错误时,通常是因为传递给某些函数的张量列表为空。为了修复这个问题,可以采取以下几个措施来确保输入数据的有效性和正确性。 #### 检查输入数据 确保用于创建模型预测或训练的数据集不为空,并且每次迭代都提供了有效的样本。如果是在批处理模式下工作,则应验证批次大小设置合理,不会导致零长度输出的情况发生[^3]。 #### 调试代码逻辑 仔细审查涉及操作张量集合的部分程序段落,特别是那些可能返回空列表的地方。例如,在构建图神经网络(GNNs)或其他依赖于节点间连接结构的任务中,可能会因为缺少边而产生此类异常;对于序列建模而言,可能是由于时间步数配置不当所致。 #### 修改参数设定 有时调整超参数也能解决问题。比如适当降低学习率、改变优化器类型或是修改损失函数定义等方法都有助于改善收敛状况并减少潜在错误的发生概率。 ```python import torch def check_tensors(tensor_list): if not isinstance(tensor_list, (list, tuple)): raise TypeError('Expected a list/tuple of tensors but got {}'.format(type(tensor_list))) if len(tensor_list) == 0: raise ValueError('The provided tensor list is empty.') for t in tensor_list: if not isinstance(t, torch.Tensor): raise TypeError('All elements must be instances of Tensor') check_tensors([torch.randn(1), torch.ones((2,))]) # 此处为正常情况下的调用示例 try: check_tensors([]) # 尝试传入一个空列表以触发异常捕获机制 except Exception as e: print(e) ``` 通过上述手段能够有效地定位并修正引起 `'expected a non-empty list of Tensors'` 的根本原因,从而保障PyTorch项目顺利执行下去。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值