Я использую 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
.Я думаю, что мой концептуальный подход может быть неправильным, но я не знаю, с чего начать это исправлять.У кого-нибудь есть рекомендации по исправлению моего подхода?