2017-06-01 2 views
0

J'expérimente la quantification d'un réseau de neurones dans Tensorflow 1.1.Tensorflow tanh avec des valeurs quantifiées

Selon le documentation, l'opération tanh prend en charge les entrées à virgule flottante ainsi que les entrées à virgule fixe de type qint32. Cependant, je ne peux pas obtenir ce travail:

import tensorflow as tf 

sess = tf.InteractiveSession() 

x = tf.constant([1.,2.,3.], dtype=tf.float32) 

from tensorflow.python.ops.gen_array_ops import quantize_v2 
x_quant = quantize_v2(x, min_range=0., max_range=4., T=tf.qint32) 

y_quant = tf.nn.tanh(x_quant[0]) 

Le code donne un message d'erreur:

TypeError: Value passed to parameter 'x' has DataType qint32 not in list of 
allowed values: float16, float32, float64, complex64, complex128 

Y at-il un moyen de sortir ou est-ce juste un bug dans la documentation ?

Répondre

1

C'est probablement un bug dans doc. Selon la fonction back-end _tanh dans gen_math_ops.py:

def _tanh(x, name=None): 
    r"""Computes hyperbolic tangent of `x` element-wise. 

    Args: 
    x: A `Tensor`. Must be one of the following types: `half`, `float32`, `float64`, `complex64`, `complex128`. 
    name: A name for the operation (optional). 

Depuis la quantification est vraiment nouveau, peut-être la nouvelle version de _tanh est toujours en cours.

+0

Après avoir parcouru l'historique des fichiers, je peux confirmer qu'il s'agit d'un bogue dans les documents qui ont été introduits en juillet 2015, avant que nous ne soyons sortis et que la définition de quantification n'était pas complètement cliquée. –

+0

Merci pour votre précisions! Alors, quel serait le moyen le plus simple de quantifier l'inférence pour un réseau qui utilise la fonction d'activation tanh? – rerx