前陣子有發問,關於 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,多張圖片如何堆疊轉成指針相关推荐

  1. python select實現非阻塞socket

    python select實現非阻塞socket - liukeforever的专栏 - 博客频道 - CSDN.NET python select實現非阻塞socket 分类: Python 201 ...

  2. 凸包计算几何matlab,計算幾何-凸包算法 Python實現與Matlab動畫演示

    凸包算法是計算幾何中的最經典問題之一了.給定一個點集,計算其凸包.凸包是什么就不羅嗦了 本文給出了<計算幾何--算法與應用>中一書所列凸包算法的Python實現和Matlab實現,並給出了 ...

  3. 在SQL2000怎樣用動態實現SQL2005的nvarchar(max)功能

    最近發現還有網友在提SQL2000的字符限制問題,以下舉一個例給大家參照: --動態建表: use Tempdb go if object_id('SP_CreateTable') is not nu ...

  4. matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...

    基於matlab的貝葉斯網絡工具箱BNT是kevin p.murphy基於matlab語言開發的關於貝葉斯網絡學習的開源軟件包,提供了許多貝葉斯網絡學習的底層基礎函數庫,支持多種類型的節點(概率分布) ...

  5. 如何使用pdfbox實現打印功能--foxconn-it-zyzx-xiaohuibing-2

    上一篇我們講到了環境的搭建,本篇主要將我們的業務需求 需求:暴露一個接口,用戶傳入參數(包含,文件的路徑,打印機名稱,紙張為橫向還是縱向,紙張的大小(A3/A4等),雙面打印還是單面,打印單號(本來是 ...

  6. 纯php实现定时器任务,純PHP實現定時器任務(Timer)

    定時器任務,在WEB應用比較常見,如何使用PHP實現定時器任務,大致有兩種方案:1)使用Crontab命令,寫一個shell腳本,在腳本中調用PHP文件,然后定期執行該腳本:2)配合使用ignore_ ...

  7. 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程

    目錄: 開玩樹莓派(一):安裝Raspbian系統 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程 開玩樹莓派(三):Python編程 開玩樹莓派(四):GPIO控制和遠程 ...

  8. Asp.net動態添加控件(转)

    項目當中有,要用到動態創建控件,以前在Winform中,容易實現,Web中花了半天的時間學習了一上,現在這里記錄一下:基於asp.net2.0,簡要記錄一下頁面的控件如何動態創建的步驟,同時也記錄一下 ...

  9. JAVA中實現鏈表 LinkedList的使用

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! impo ...

最新文章

  1. erlang使用gen_server实现质数服务器(手打代码,还debug了几个错误)
  2. ecs服务器网站文件放在哪里,云服务器ecs文件放哪里
  3. centos7装完chrome无法使用yum问题解决
  4. Trigger触发器_05
  5. jni调用java类_JNI之C++调用Java类 —— java.lang.String
  6. Java 蓝桥杯 矩阵乘法
  7. 计算机CPU高温,电脑cpu温度高怎么办?别怕,三招搞定
  8. Hadoop培训视频教程
  9. 迅雷Beta来了,这软件太实用了,磁力随心下
  10. 论文阅读:Video Visual Relation Detection via Iterative Inference
  11. 使用Incapsula免费CDN加速godaddy空间
  12. BUUCTF NewStarCTF一些新知识记录
  13. 值得推荐好用的网址导航网站大全
  14. PostgreSQL树形结构的递归查询
  15. CAD图库分享好用免费的CAD图纸
  16. 毕业设计-基于机器学习的短期负荷预测算法
  17. 第二次作业:支付宝案例分析1
  18. 智联招聘发布Q3 平均薪酬报告;价值 13 亿的元宇宙,一天只有38个活跃用户;统一充电接口或让苹果每年损失百亿 | EA周报...
  19. 蓝桥杯大赛历届省赛真题(软件类)免费下载!!!
  20. Go语言学习史诗级教程-带你领略GoLang语言新世界

热门文章

  1. 将Spock 1.3测试迁移到Spock 2.0
  2. 使用Java Stream摘要统计
  3. 通过粘性仙人掌基元进行延迟加载和缓存
  4. Spring教程:使用Spring框架和Spring Boot创建Hello World REST API
  5. 在Sqoop中管理密码的关键提示
  6. java自动推断类型_Java 7的类型推断
  7. 将Java 8支持添加到Eclipse Kepler
  8. 深入了解Java 8日期和时间API
  9. 开源JVM Sampling Profiler
  10. Java 7中对String.substring的更改