畳み込み演算を含むネットワークモデルにおいて、
データをTensorflowのINT16型を用いることで量子化したいと考えています。
前提
GPU == NVIDIA RTX3060
OS == Ubuntu20.04
python == 3.11.0
Tensorflow == 2.13.0
cuda == 8.6
cuDNN == 11.8
公開されている学習済みの重みパラメータを用いて推論処理を行うようなコードを作成しました。
しかし、実装した際に以下のエラーメッセージが発生しました。
エラーメッセージ
tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'QuantizedConv2D' used by {{node model_2/block1_conv2d/QuantizedConv2D}} with these attrs: [out_type=DT_QINT32, Tfilter=DT_QUINT16, dilations=[1, 1, 1, 1], strides=[1, 1, 1, 1], padding="SAME", Tinput=DT_QUINT16]
Registered devices: [CPU, GPU]
Registered kernels:
device='CPU'; Tinput in [DT_QUINT8]; Tfilter in [DT_QUINT8]; out_type in [DT_QINT32]
device='CPU'; Tinput in [DT_QUINT8]; Tfilter in [DT_QINT8]; out_type in [DT_QINT32]
[[model_2/block1_conv2d/QuantizedConv2D]] [Op:__inference_predict_function_42642]
以上のエラーについて理解し、解決したいと考えています。
問題はKernelがINT16の演算をサポートしていないということだと理解していますが、
Tensorflow側はIINT16をサポートしており、障害となっている点がわからずにいます。
似たようなエラーの情報でもよいので、いただければ嬉しいです。
0 コメント