为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以以字节为单位转换特征图?

是否可以以字节为单位转换特征图?

holdtom 2022-10-25 16:17:04
蟒蛇 3.6团结 2019我正在尝试找到将特征图数据传输到统一的最佳解决方案。我想以字节为单位发送数据。但是我没有找到如何将其编码为字节,然后统一解码。基本上是一个 4d 数组,需要根据我的理解将其转换为字节蟒蛇片for fmap in feature_maps:            bytes = []            bytes.append(fmap)            arrays_of_features.append(bytes)        data = np.array(arrays_of_features, dtype=float) # this is not working because of the fact is multidimensional array apparently.         print(fmap)        c.sendall(data.tobytes())统一块:byte[] bytes = new byte[4000]; int idxUsedBytes = client.Receive(bytes);    floatsReceived = new float[idxUsedBytes / 4];    Buffer.BlockCopy(bytes, 0, floatsReceived, 0, idxUsedBytes);    print(floatsReceived[0]);
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您的问题非常不清楚,我相信您对 numpy 的工作原理感到困惑。如果是这样,让我们解释一些事情。来自 numpy 的数组只不过是内存中的一串字节。特别是,当为您显示这些字节时,它们由 dtype 解释。dtype 不用于存储底层数据,而仅用于显示它。因此,更改 dtype 只会更改数据对您的外观,不会更改数据本身。尺寸也是一样。数据的维度只会改变数据的显示和访问方式,python 实际上并不会移动数据或改变数据本身。例如,


import numpy as np


x = np.array([[1,2,3],[4,5,6]],dtype='int64') #48 bytes, each int takes up 8 bytes.

print(x)

x.dtype = 'int32'

print(x)

x.dtype = 'float'

print(x)

x.dtype = 'int16'

print(x)

请注意,我们可以更改 dtype 并且绝对零计算由数组完成(因为基础数据已经是一个字节数组)。同样,我们可以改变形状,也可以完成绝对零计算。


x.shape = (2,2,6)

print(x)

shape 和 dtype 与内存中存储的数据无关。希望这可以清楚地说明我们现在如何将数组作为字节处理。


x = np.array([[1,2,3],[4,5,6]],dtype='int64')

print(x)

y = x.tobytes()


# Send y somewhere. Save to a file. Etc.


z = np.frombuffer(y)

z.dtype = 'int64'

z.shape = (2,3)

print(z)


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信