Набор данных Tensorflow - Tokenization - объект SparseTensor не имеет атрибута name - PullRequest
0 голосов
/ 23 мая 2019

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

Traceback (most recent call last):
  File "train.py", line 188, in <module>
    history = model.fit(train_dataset, epochs=epochs, steps_per_epoch=steps_per_epoch)
  File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 880, in fit
  validation_steps=validation_steps)
  File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 266, in model_iteration
batch_outs = f(actual_inputs)
  File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/backend.py", line 3073, in __call__
self._make_callable(feed_arrays, feed_symbols, symbol_vals, session)
  File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/backend.py", line 3008, in _make_callable
connection.from_tensor = from_tensor.name  # Data tensor
AttributeError: 'SparseTensor' object has no attribute 'name'

при предварительной обработке DataSet с использованием .map API.Это моя первая попытка использования tf.data.Dataset.map API, и я пытаюсь преобразовать свой процесс из tf.keras.preprocessing.text.Tokenizer API в tensorflow_transform.Единственный пример, который я видел, относится к анализу настроений Ниже приведена моя логика (сокращено для краткости): импортировать тензор потока как tf, импортировать тензор потока_трансформации как tft

class Tokenizer(object):

    def __init__(self, label_table):
        self.label_table = label_table

    def __call__(self, data, labels):
        split_data = tf.string_split([data], ' ')
        tokenized_data = tft.compute_and_apply_vocabulary(split_data, name='compute_vocabulary')
        labels = self.label_table.lookup(labels, name='assign_labels')
        print(tokenized_data) # <SparseTensor ...>
        return tokenized_data, labels

if __name__ == '__main__':
    training_text = tf.constant(raw_train_data, name='raw_text')
    training_label_tensor = tf.constant(raw_train_labels, name='labels')
    train_dataset = tf.data.Dataset.from_tensor_slices((training_text, training_label_tensor))

    label_tensor = tf.constant(['Label 1', 'Label 2', 'Label n'])
    label_table = tf.contrib.lookup.index_table_from_tensor(mapping=label_tensor, num_oov_buckets=1, default_value=-1)
    data_preprocessor = Tokenizer(label_table)
    train_dataset = train_dataset.map(data_preprocessor)

Я определил мой tokenized_data переменная как SparseTensor, но я не знаю, почему она не имеет атрибута name.Я думаю, что мой концептуальный подход может быть неправильным, но я не знаю, с чего начать это исправлять.У кого-нибудь есть рекомендации по исправлению моего подхода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...