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

蟒蛇 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]);


holdtom
浏览 114回答 1
1回答

婷婷同学_

您的问题非常不清楚,我相信您对 numpy 的工作原理感到困惑。如果是这样,让我们解释一些事情。来自 numpy 的数组只不过是内存中的一串字节。特别是,当为您显示这些字节时,它们由 dtype 解释。dtype 不用于存储底层数据,而仅用于显示它。因此,更改 dtype 只会更改数据对您的外观,不会更改数据本身。尺寸也是一样。数据的维度只会改变数据的显示和访问方式,python 实际上并不会移动数据或改变数据本身。例如,import numpy as npx = 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python