При использовании поиска хеш-таблицы с tf.contrib.Dataset.map()
происходит сбой со следующей ошибкой:
TypeError: In op 'hash_table_Lookup', input types ([tf.string, tf.string, tf.int32]) are not compatible with expected types ([tf.string_ref, tf.string, tf.int32])
Код для воспроизведения:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
initializer = tf.contrib.lookup.KeyValueTensorInitializer(
['one', 'two', 'three'], [1, 2, 3])
hash_table = tf.contrib.lookup.HashTable(initializer, -1)
tensor = tf.convert_to_tensor(['one', 'two', 'three'])
dataset = tf.contrib.data.Dataset.from_tensor_slices(tensor)
dataset = dataset.map(lambda k: hash_table.lookup(k))
Он жалуется на несовместимость tf.string_ref
и tf.string
.
Странно, что он ожидает tf.string_ref
, а не tf.string
. Кто-нибудь знает, почему это так и что я могу с этим поделать?
Проблемы связаны с тем, что table_ref
является tf.string_ref
здесь.