質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1171閲覧

TVMによるONNXモデルからcソースコードの出力

nagano-yuhi

総合スコア39

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2グッド

1クリップ

投稿2022/06/20 15:21

タイトルにもあるようにTVMによるONNXモデルからcソースコードへの
変換を目指しています。

targetをcにしてrelayに通すと、module.get_source()でソースコードが出てくると言われたので、以下のようにpythonコードを書きました。

#sample1.py import tvm import onnx import tvm.relay as relay from tvm.contrib.download import download_testdata import numpy as np from PIL import Image model_path = 'resnet50-v2-7.onnx' onnx_model = onnx.load(model_path) img_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true" img_path = download_testdata(img_url, "cat.png", module="data") img = Image.open(img_path).resize((224, 224)) img_ycbcr = img.convert("YCbCr") # convert to YCbCr img_y, img_cb, img_cr = img_ycbcr.split() x = np.array(img_y)[np.newaxis, np.newaxis, :, :] # target = 'llvm' target = "c" input_name = "1" shape_dict = {input_name: x.shape} mod, params = relay.frontend.from_onnx(onnx_model, shape_dict) with tvm.transform.PassContext(opt_level=1): intrp = relay.build_module.create_executor("graph", mod, tvm.cpu(0), target) dtype = "float32" tvm_output = intrp.evaluate()(tvm.nd.array(x.astype(dtype)), **params).asnumpy() from matplotlib import pyplot as plt out_y = Image.fromarray(np.uint8((tvm_output[0, 0]).clip(0, 255)), mode="L") out_cb = img_cb.resize(out_y.size, Image.BICUBIC) out_cr = img_cr.resize(out_y.size, Image.BICUBIC) result = Image.merge("YCbCr", [out_y, out_cb, out_cr]).convert("RGB") canvas = np.full((672, 672 * 2, 3), 255) canvas[0:224, 0:224, :] = np.asarray(img) canvas[:, 672:, :] = np.asarray(result) plt.imshow(canvas.astype(np.uint8)) plt.show() module.get_source()

python3 sample1.py
実行したところ、以下のエラー?が出力されました。

Traceback (most recent call last): File "sample1.py", line 23, in <module> mod, params = relay.frontend.from_onnx(onnx_model, shape_dict) File "/mnt/c/programing/tvm/python/tvm/relay/frontend/onnx.py", line 5699, in from_onnx mod, params = g.from_onnx(graph, opset) File "/mnt/c/programing/tvm/python/tvm/relay/frontend/onnx.py", line 5367, in from_onnx self._check_user_inputs_in_outermost_graph_scope() File "/mnt/c/programing/tvm/python/tvm/relay/frontend/onnx.py", line 5444, in _check_user_inputs_in_outermost_graph_scope self._shape AssertionError: User specified the shape for inputs that weren't found in the graph: {'1': (1, 1, 224, 224)}

何でもいいのでここら辺に関する知識が欲しいです。
参考にすべきサイト等があればそれも提示していただけると嬉しいです。
よろしくお願いします。

aaabbbsss, cyyyyyyyyyyyyy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
文章にすると長くなるので、詳しく知りたい方がいれば、乗っけたいと思います。

投稿2022/07/03 01:08

nagano-yuhi

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問