fusion做电影网站卡死,nas做网站需要备案吗,详情页模板免费套用,青岛崂山区网站建设目录
numpy ascontiguousarra函数
转换命令#xff1a;
ascontiguousarray等价效果#xff1a;
ascontiguousarray学习笔记 ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组#xff0c;使得运行速度更快。
在昇腾开发版上使用时#xff0c;…目录
numpy ascontiguousarra函数
转换命令
ascontiguousarray等价效果
ascontiguousarray学习笔记 ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组使得运行速度更快。
在昇腾开发版上使用时因为内存不连续导致预测结果错误。
import numpy as npa np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.flags) # c_contiguous为True数组a为C连续性b np.ascontiguousarray(a)
print(b)
print(b.flags) # c_contiguous为True数组b为C连续性c np.ascontiguousarray(a, dtypenp.float32)
print(c)
print(c.flags) # c_contiguous为True数组c为C连续性且元素类型变为np.float32
转换命令 atc --modelplate.onnx --framework5 --outputplate_rec_color_bs1 --input_formatNCHW --input_shapeimages:1,3,48,168 --loginfo --soc_versionAscend310P3 img np.ascontiguousarray(img)
ascontiguousarray等价效果
img3.tofile(temp.bin)
img4 np.fromfile(temp.bin, dtypenp.float32) # 从bin文件中读取图片
ascontiguousarray学习笔记
1、ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组使得运行速度更快。
比如我们生成一个二维数组Numpy可以通过.flags熟悉查看一个数组是C连续还是Fortran连续的
import numpy as np
arr np.arange(12).reshape(3,4)
flags arr.flags
print(,arr)
print(flags)
output: [[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]C_CONTIGUOUS : TrueF_CONTIGUOUS : FalseOWNDATA : FalseWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False 我们可以看到 C_CONTIGUOUS : True就说明是行连续F_CONTIGUOUS : False则代表列不连续。同理如果我们进行arr.T 或者arr.transpose(1,0)则是列连续行不连续。
import numpy as np
arr np.arange(12).reshape(3,4)
arr1 arr.transpose(1,0)
flags arr1.flags
print(,arr1)
print(flags)
output: [[ 0 4 8][ 1 5 9][ 2 6 10][ 3 7 11]]C_CONTIGUOUS : FalseF_CONTIGUOUS : TrueOWNDATA : FalseWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False 如果进行在行上的slice即进行切割则会改变连续性成为既不C连续也不Fortran连续的
import numpy as np
arr np.arange(12).reshape(3,4)
arr1 arr[:,0:2]
flags arr1.flags
print(,arr1)
print(flags)
output: [[0 1][4 5][8 9]]C_CONTIGUOUS : FalseF_CONTIGUOUS : FalseOWNDATA : FalseWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False 此时利用ascontiguousarray函数可以将其变为连续的 import numpy as np
arr np.arange(12).reshape(3,4)
arr1 arr[:,0:2]
arr2 np.ascontiguousarray(arr1)
flags arr2.flags
print(,arr2)
print(flags) output: [[0 1][4 5][8 9]]C_CONTIGUOUS : TrueF_CONTIGUOUS : FalseOWNDATA : TrueWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False C_CONTIGUOUS : True
C_CONTIGUOUS真