python batch_size_python 實現動態 batch size,多張圖片如何堆疊轉成指針
前陣子有發問,關於 python 動態 batch size 如何實現,目前解決之前問題
現在遇到的問題是當我把兩張圖片直接用 numpy concat 堆疊在一起 進行 acl.util.numpy_to_ptr 轉換成指針
進行推理後,得到的結果只有第一張圖片是對的,第二張之後就是錯的
想確認 batch size 大於1時一該要如何堆疊,然後轉成 acl format
def transfer_pic(input_path):
input_path = os.path.abspath(input_path)
image_file = Image.open(input_path)
image_file = image_file.resize((256, 256))
img = np.array(image_file)
height = img.shape[0]
width = img.shape[1]
# 对图片进行切分,取中间区域
h_off = (height - 224) // 2
w_off = (width - 224) // 2
crop_img = img[h_off:height - h_off, w_off:width - w_off, :]
# rgb to bgr,改变通道顺序
img = crop_img[:, :, ::-1]
shape = img.shape
img = img.astype("float16")
img[:, :, 0] -= 104
img[:, :, 1] -= 117
img[:, :, 2] -= 123
img = img.reshape([1] + list(shape))
img = img.transpose([0, 3, 1, 2])
result = np.frombuffer(img.tobytes(), np.float16)
return result
img1 = transfer_pic("path1")
img2 = transfer_pic("path2")
datasets = numpy.concatenate((img1, img2), axis=0)
temp_data_buffer = input_data
for i, item in enumerate(temp_data_buffer):
input_name = acl.mdl.get_input_name_by_index(model_desc, i)
if input_name != dynamicFlag:
ptr = acl.util.numpy_to_ptr(datasets)
print(ptr)
ret = acl.rt.memcpy(item["buffer"],
item["size"],
ptr,
item["size"],
ACL_MEMCPY_HOST_TO_DEVICE)
check_ret("acl.rt.memcpy", ret)
else:
print("")
假設圖片 224,224,3 經過 transfer_pic() 後得到 img.shape = (150528, )
把兩張圖片直接 numpy.concat 堆疊起來變成 datasets.shape = (301056, )
然後透過
ptr = acl.util.numpy_to_ptr(datasets)
print(ptr)
ret = acl.rt.memcpy(item["buffer"],
item["size"],
ptr,
item["size"],
ACL_MEMCPY_HOST_TO_DEVICE)
這個思路是否有什麼問題,才造成只有第一張圖片正確
附上推論的代碼
python batch_size_python 實現動態 batch size,多張圖片如何堆疊轉成指針相关推荐
- python select實現非阻塞socket
python select實現非阻塞socket - liukeforever的专栏 - 博客频道 - CSDN.NET python select實現非阻塞socket 分类: Python 201 ...
- 凸包计算几何matlab,計算幾何-凸包算法 Python實現與Matlab動畫演示
凸包算法是計算幾何中的最經典問題之一了.給定一個點集,計算其凸包.凸包是什么就不羅嗦了 本文給出了<計算幾何--算法與應用>中一書所列凸包算法的Python實現和Matlab實現,並給出了 ...
- 在SQL2000怎樣用動態實現SQL2005的nvarchar(max)功能
最近發現還有網友在提SQL2000的字符限制問題,以下舉一個例給大家參照: --動態建表: use Tempdb go if object_id('SP_CreateTable') is not nu ...
- matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...
基於matlab的貝葉斯網絡工具箱BNT是kevin p.murphy基於matlab語言開發的關於貝葉斯網絡學習的開源軟件包,提供了許多貝葉斯網絡學習的底層基礎函數庫,支持多種類型的節點(概率分布) ...
- 如何使用pdfbox實現打印功能--foxconn-it-zyzx-xiaohuibing-2
上一篇我們講到了環境的搭建,本篇主要將我們的業務需求 需求:暴露一個接口,用戶傳入參數(包含,文件的路徑,打印機名稱,紙張為橫向還是縱向,紙張的大小(A3/A4等),雙面打印還是單面,打印單號(本來是 ...
- 纯php实现定时器任务,純PHP實現定時器任務(Timer)
定時器任務,在WEB應用比較常見,如何使用PHP實現定時器任務,大致有兩種方案:1)使用Crontab命令,寫一個shell腳本,在腳本中調用PHP文件,然后定期執行該腳本:2)配合使用ignore_ ...
- 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程
目錄: 開玩樹莓派(一):安裝Raspbian系統 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程 開玩樹莓派(三):Python編程 開玩樹莓派(四):GPIO控制和遠程 ...
- Asp.net動態添加控件(转)
項目當中有,要用到動態創建控件,以前在Winform中,容易實現,Web中花了半天的時間學習了一上,現在這里記錄一下:基於asp.net2.0,簡要記錄一下頁面的控件如何動態創建的步驟,同時也記錄一下 ...
- JAVA中實現鏈表 LinkedList的使用
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! impo ...
最新文章
- erlang使用gen_server实现质数服务器(手打代码,还debug了几个错误)
- ecs服务器网站文件放在哪里,云服务器ecs文件放哪里
- centos7装完chrome无法使用yum问题解决
- Trigger触发器_05
- jni调用java类_JNI之C++调用Java类 —— java.lang.String
- Java 蓝桥杯 矩阵乘法
- 计算机CPU高温,电脑cpu温度高怎么办?别怕,三招搞定
- Hadoop培训视频教程
- 迅雷Beta来了,这软件太实用了,磁力随心下
- 论文阅读:Video Visual Relation Detection via Iterative Inference
- 使用Incapsula免费CDN加速godaddy空间
- BUUCTF NewStarCTF一些新知识记录
- 值得推荐好用的网址导航网站大全
- PostgreSQL树形结构的递归查询
- CAD图库分享好用免费的CAD图纸
- 毕业设计-基于机器学习的短期负荷预测算法
- 第二次作业:支付宝案例分析1
- 智联招聘发布Q3 平均薪酬报告;价值 13 亿的元宇宙,一天只有38个活跃用户;统一充电接口或让苹果每年损失百亿 | EA周报...
- 蓝桥杯大赛历届省赛真题(软件类)免费下载!!!
- Go语言学习史诗级教程-带你领略GoLang语言新世界