最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch通過保存為ONNX模型轉(zhuǎn)TensorRT5的實(shí)現(xiàn)

 更新時(shí)間:2020年05月25日 11:23:24   作者:小關(guān)學(xué)長(zhǎng)  
這篇文章主要介紹了Pytorch通過保存為ONNX模型轉(zhuǎn)TensorRT5的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

1 Pytorch以O(shè)NNX方式保存模型

 def saveONNX(model, filepath):
  '''
  保存ONNX模型
  :param model: 神經(jīng)網(wǎng)絡(luò)模型
  :param filepath: 文件保存路徑
  '''
  
  # 神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù)類型
  dummy_input = torch.randn(self.config.BATCH_SIZE, 1, 28, 28, device='cuda')
  torch.onnx.export(model, dummy_input, filepath, verbose=True)

2 利用TensorRT5中ONNX解析器構(gòu)建Engine

 def ONNX_build_engine(onnx_file_path):
  '''
  通過加載onnx文件,構(gòu)建engine
  :param onnx_file_path: onnx文件路徑
  :return: engine
  '''
  # 打印日志
  G_LOGGER = trt.Logger(trt.Logger.WARNING)

  with trt.Builder(G_LOGGER) as builder, builder.create_network() as network, trt.OnnxParser(network, G_LOGGER) as parser:
   builder.max_batch_size = 100
   builder.max_workspace_size = 1 << 20

   print('Loading ONNX file from path {}...'.format(onnx_file_path))
   with open(onnx_file_path, 'rb') as model:
    print('Beginning ONNX file parsing')
    parser.parse(model.read())
   print('Completed parsing of ONNX file')

   print('Building an engine from file {}; this may take a while...'.format(onnx_file_path))
   engine = builder.build_cuda_engine(network)
   print("Completed creating Engine")

   # 保存計(jì)劃文件
   # with open(engine_file_path, "wb") as f:
   #  f.write(engine.serialize())
   return engine

3 構(gòu)建TensorRT運(yùn)行引擎進(jìn)行預(yù)測(cè)

 def loadONNX2TensorRT(filepath):
  '''
  通過onnx文件,構(gòu)建TensorRT運(yùn)行引擎
  :param filepath: onnx文件路徑
  '''
  # 計(jì)算開始時(shí)間
  Start = time()

  engine = self.ONNX_build_engine(filepath)

  # 讀取測(cè)試集
  datas = DataLoaders()
  test_loader = datas.testDataLoader()
  img, target = next(iter(test_loader))
  img = img.numpy()
  target = target.numpy()

  img = img.ravel()

  context = engine.create_execution_context()
  output = np.empty((100, 10), dtype=np.float32)

  # 分配內(nèi)存
  d_input = cuda.mem_alloc(1 * img.size * img.dtype.itemsize)
  d_output = cuda.mem_alloc(1 * output.size * output.dtype.itemsize)
  bindings = [int(d_input), int(d_output)]

  # pycuda操作緩沖區(qū)
  stream = cuda.Stream()
  # 將輸入數(shù)據(jù)放入device
  cuda.memcpy_htod_async(d_input, img, stream)
  # 執(zhí)行模型
  context.execute_async(100, bindings, stream.handle, None)
  # 將預(yù)測(cè)結(jié)果從從緩沖區(qū)取出
  cuda.memcpy_dtoh_async(output, d_output, stream)
  # 線程同步
  stream.synchronize()

  print("Test Case: " + str(target))
  print("Prediction: " + str(np.argmax(output, axis=1)))
  print("tensorrt time:", time() - Start)

  del context
  del engine

補(bǔ)充知識(shí):Pytorch/Caffe可以先轉(zhuǎn)換為ONNX,再轉(zhuǎn)換為TensorRT

近來工作,試圖把Pytorch用TensorRT運(yùn)行。折騰了半天,沒有完成。github中的轉(zhuǎn)換代碼,只能處理pytorch 0.2.0的功能(也明確表示不維護(hù)了)。和同事一起處理了很多例外,還是沒有通過。吾以為,實(shí)際上即使勉強(qiáng)過了,能不能跑也是問題。

后來有高手建議,先轉(zhuǎn)換為ONNX,再轉(zhuǎn)換為TensorRT。這個(gè)思路基本可行。

是不是這樣就萬事大吉?當(dāng)然不是,還是有嚴(yán)重問題要解決的。這只是個(gè)思路。

以上這篇Pytorch通過保存為ONNX模型轉(zhuǎn)TensorRT5的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python with語句上下文管理器兩種實(shí)現(xiàn)方法分析

    Python with語句上下文管理器兩種實(shí)現(xiàn)方法分析

    這篇文章主要介紹了Python with語句上下文管理器兩種實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python上下文管理器的相關(guān)概念、功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-02-02
  • Selenium多窗口切換解決方案

    Selenium多窗口切換解決方案

    本文主要介紹了Selenium多窗口切換解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 解讀keras中的正則化(regularization)問題

    解讀keras中的正則化(regularization)問題

    這篇文章主要介紹了解讀keras中的正則化(regularization)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用Python實(shí)現(xiàn)搖號(hào)系統(tǒng)的詳細(xì)步驟

    使用Python實(shí)現(xiàn)搖號(hào)系統(tǒng)的詳細(xì)步驟

    這篇文章主要介紹了如何使用Python構(gòu)建一個(gè)簡(jiǎn)單的搖號(hào)系統(tǒng),包括需求分析、技術(shù)棧、實(shí)現(xiàn)步驟和完整代碼示例,該系統(tǒng)能夠從用戶輸入的參與者名單中隨機(jī)抽取指定數(shù)量的中獎(jiǎng)?wù)?并將結(jié)果展示給用戶以及記錄到日志文件中,需要的朋友可以參考下
    2024-11-11
  • 解決python3爬蟲無法顯示中文的問題

    解決python3爬蟲無法顯示中文的問題

    下面小編就為大家分享一篇解決python3爬蟲無法顯示中文的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python爬取之json、pickle與shelve庫的深入講解

    python爬取之json、pickle與shelve庫的深入講解

    這篇文章主要給大家介紹了關(guān)于python爬取之json、pickle與shelve庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • PyCharm 2019.3發(fā)布增加了新功能一覽

    PyCharm 2019.3發(fā)布增加了新功能一覽

    這篇文章主要介紹了PyCharm 2019.3發(fā)布,增加了新功能一覽,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • keras model.fit 解決validation_spilt=num 的問題

    keras model.fit 解決validation_spilt=num 的問題

    這篇文章主要介紹了keras model.fit 解決validation_spilt=num 的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python figure參數(shù)及subplot子圖繪制代碼

    Python figure參數(shù)及subplot子圖繪制代碼

    這篇文章主要介紹了Python figure參數(shù)及subplot子圖繪制代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖

    python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖

    這篇文章主要介紹了python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖,文章主要繪制折線圖、散點(diǎn)圖、直方圖、餅圖等需要的小伙伴可以參考一下文章具體內(nèi)容
    2022-06-06

最新評(píng)論

南江县| 萨迦县| 安多县| 久治县| 吴堡县| 桃江县| 肇州县| 萨迦县| 吉林省| 阿坝| 阳新县| 任丘市| 思南县| 乌审旗| 门头沟区| 六盘水市| 浠水县| 西安市| 平遥县| 珲春市| 汉中市| 彩票| 泗阳县| 永福县| 肥西县| 滨海县| 会东县| 太仆寺旗| 崇州市| 澜沧| 安新县| 鄄城县| 武陟县| 德化县| 新密市| 溧水县| 手游| 营口市| 聊城市| 大同县| 白银市|