关于NumPy与PyTorch中1.与1.0的等价性及torch.ones输出的疑问
NumPy与PyTorch中1和1.0的等价性问题
一、1与1.0的相等性
- 数值层面:在NumPy和PyTorch中,整数
1和浮点数1.0的数值是相等的。比如执行np.array(1) == np.array(1.0)或torch.tensor(1) == torch.tensor(1.0),都会返回True。 - 数据类型层面:二者完全不同。NumPy里
np.array(1)默认是int64类型,np.array(1.0)默认是float64类型;PyTorch里torch.tensor(1)默认是torch.int64,torch.tensor(1.0)默认是torch.float32(具体类型可能受全局设置影响)。这种类型差异会影响运算逻辑,比如整数和浮点数混合运算时会自动做类型提升,但在要求严格类型匹配的场景下会触发错误。
二、torch.ones输出中'1.'的含义
torch.ones(1,4)生成的是浮点类型张量,默认 dtype 为torch.float32(可通过a.dtype查看)。输出里的1.就是1.0的缩写,用来标识这是浮点数,和整数1完全不等同:
- 它的本质是浮点数数值1.0,数据类型为浮点型,而非整数型;
- 虽然
a[0][0] == 1会返回True(数值相等),但a[0][0].dtype和torch.tensor(1).dtype是完全不同的类型。
内容的提问来源于stack exchange,提问作者manus7
相关产品推荐
相关产品推荐

