pytorch 中 numpy 类型与 torch 类型共享存储的问题
2018-03-23 19:11
513 查看
从今天起,总结学习 pytorch 过程中遇到的一些日后可能出错的小问题。
首先就是 pytorch 官网 tutorial 第一章讲的,numpy 类型与 torch 类型共享存储,并且还给出样例: http://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#tensors 在文章中,作者举例,当 torch 类型转换为 numpy类型时,对其中一个操作就相当于对另一个操作:
a = torch.ones(5)
print(a)
Out:
a.add_(1)
print(a)
print(b)
Out:
2
2
2
2
2
[torch.FloatTensor of size (5,)]
[1. 1. 1. 1. 1.]
可以看到,这个时候 a 变了,但是 b 并没有变。
#########################################################################
同理,反过来,当 numpy 类型转换为 torch 类型的时候,作者举例如下:
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
Out:
[[2. 2.]
[2. 2.]
[2. 2.]]
1 1
1 1
1 1
[torch.DoubleTensor of size (3,2)]
具体为什么目前还没查到,先记在这里,日后发现为什么了再补上。
首先就是 pytorch 官网 tutorial 第一章讲的,numpy 类型与 torch 类型共享存储,并且还给出样例: http://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#tensors 在文章中,作者举例,当 torch 类型转换为 numpy类型时,对其中一个操作就相当于对另一个操作:
a = torch.ones(5)
print(a)
Out:
1 1 1 1 1 [torch.FloatTensor of size 5]
b = a.numpy() print(b)Out:
[ 1. 1. 1. 1. 1.]然后执行:
a.add_(1)
print(a)
print(b)
Out:
2 2 2 2 2 [torch.FloatTensor of size 5] [ 2. 2. 2. 2. 2.]但是,我试着将代码中的 a.add_(1) 替换为 a = a + 1,结果就不是这样的:
2
2
2
2
2
[torch.FloatTensor of size (5,)]
[1. 1. 1. 1. 1.]
可以看到,这个时候 a 变了,但是 b 并没有变。
#########################################################################
同理,反过来,当 numpy 类型转换为 torch 类型的时候,作者举例如下:
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
Out:
[ 2. 2. 2. 2. 2.] 2 2 2 2 2 [torch.DoubleTensor of size 5]如果我把代码中的 np.add(a, 1, out=a) 替换为 a = a + 1 的话,就又不共享存储了:
[[2. 2.]
[2. 2.]
[2. 2.]]
1 1
1 1
1 1
[torch.DoubleTensor of size (3,2)]
具体为什么目前还没查到,先记在这里,日后发现为什么了再补上。
相关文章推荐
- 关于统一存储多种子类型对象到定长共享内存的问题
- 日期类型存储成字符串类型的格式问题
- 存储日期类型到数据库中问题解决
- Float类型存储方式和精度丢失问题
- 存储时间类型没有时分秒,改密码等问题
- 关于使用openfiler作为共享存储来安装rac时的问题
- 一个有关Update类型的存储过程的问题
- spring-session,利用redis存储session,解决集群共享session的问题
- C调用Cpp代码时的enum类型定义共享问题
- oracle函数与存储过程中的类型问题---char 与 varchar2
- Oracle定义varchar2()类型存储汉字的长度问题
- oracle中number数据类型的存储以及最大值问题
- Oracle定义varchar2()类型存储汉字的长度问题
- pytorch实践中module 'torch' has no attribute 'form_numpy'问题的解决
- 在mysql存储过程中拼接sql解决in的字段类型不匹配问题
- 关于java的data类型向mysql的datetime中存储的问题
- VMware虚拟机访问不同类型的共享存储示意图
- arcsde9.2中text的存储类型问题(unicode,varchar and nvarchar)
- nfs共享存储遇到的问题
- oracle+jsp中blob类型存储大文本问题解决方法