Ошибка при использовании Quantized Conv2D с входами tf.qint8 - PullRequest
0 голосов
/ 22 октября 2018

Я новичок в квантовании, и я изучал использование операции QuantizedConv2D в тензорном потоке.Код выглядит следующим образом:

import tensorflow as tf
a = tf.constant([1.5,1.2],shape = [1,1,1,2], name ='a')
a1 = tf.constant([[2.0],[1.0]],shape = [1,1,2,1], name ='b')
min_a= tf.reduce_min(a)
max_a= tf.reduce_max(a)
x = tf.quantize(a,min_a,max_a,tf.qint8)
min_a1= tf.reduce_min(a1)
max_a1= tf.reduce_max(a1)
x1 = tf.quantize(a1,min_a1,max_a1,tf.qint8)
y1 = t  f.nn.quantized_conv2d(x.output,x1.output,x.output_min,x.output_max,x1.output_min,x1.output_max,[1,1,1,1],"SAME")
with tf.Session() as sess:
  print (sess.run(y1))

Я получаю следующую ошибку:

InvalidArgumentError (см. Выше для отслеживания): не было зарегистрировано OpKernel для поддержки Op 'QuantizedConv2D' с этими атрибутами,Зарегистрированные устройства: [CPU], Зарегистрированные ядра: device = 'CPU';Tinput в [DT_QUINT8];Tfilter in [DT_QUINT8];out_type в [DT_QINT32] [[Node: QuantizedConv2D = QuantizedConv2D [Tfilter = DT_QINT8, Tinput = DT_QINT8, дилатации = [1, 1, 1, 1], out_type = DT_QINT32, padding = "SAME", шаги = [1, 1,1, 1]] (QuantizeV2, QuantizeV2_1, QuantizeV2: 1, QuantizeV2: 2, QuantizeV2_1: 1, QuantizeV2_1: 2)]]

Я не уверен, верен ли мой код или этоошибка.

Любая помощь будет оценена.

Спасибо и С уважением,

Абхинав

1 Ответ

0 голосов
/ 22 октября 2018

Я считаю, что документация для tf.nn.quantized_conv2d сбивает с толку, потому что эта операция зарегистрирована только для входного типа данных tf.quint8.Вы можете сделать следующее:

x = tf.quantize(a, min_a, max_a, tf.quint8)
x1 = tf.quantize(a1, min_a1, max_a1, tf.quint8)

Я открыл выпуск на GitHub.

...