Обучите RNN на большой строке, используя Estimator API

1

Мы хотели бы, чтобы наш оценщик предсказывал слово или следующую работу так же, как клавиатура на вашем смартфоне. Мы хотели бы обучить его текстовому файлу.

Итак, мы пошли вперед и посмотрели API-интерфейс tensorflow и нашли

estimator = RNNEstimator(
    head=tf.contrib.estimator.regression_head(),
    sequence_feature_columns=[token_emb],
    rnn_cell_fn=rnn_cell_fn)

который, кажется, является удобным способом создания оценки для RNN. Теперь мы сталкиваемся с проблемами с колонками функций. Мы настраиваем их таким образом

token_sequence = sequence_categorical_column_with_hash_bucket(
    key="text", hash_bucket_size=num_of_categories, dtype=tf.string)
token_emb = embedding_column(categorical_column=token_sequence, 
    dimension=8)

где 'text' определен в нашей функции ввода

train_input_fn = tf.estimator.inputs.numpy_input_fn(
    x={"text": features},
    y=labels,
    batch_size=batch_size,
    num_epochs=None,
    shuffle=True)

где features - это просто длинный список из 40-символьных последовательностей, взятых из нашего исходного текста.

Проблемы

  1. Возможно ли использовать столбцы функций в строковых вводах? Документация на самом деле не дает много.
  2. Что делать с ярлыками? На данный момент мы получаем ошибку, так как они никогда не отбрасываются целыми числами
  3. Даже при вводе произвольных целых чисел в качестве меток мы все равно получаем ошибку при вызове estimator.train(input_fn=train_input_fn, steps=100) который говорит

    'Тип: {}'. Format (type (features))) ValueError: функции должны быть словарем Tensor s. Тип:

поэтому мы определенно делаем что-то не так. Любая помощь оценили :)

Теги:
tensorflow
tensorflow-estimator
rnn

1 ответ

0

Существует короткий пример передачи строковых словных функций как SparseTensors в классификатор Estimator (т.е. языковое моделирование) с одной меткой на шаг в модульных тестах StateSavingRnnEstimator. Это похоже на то, что вы пытаетесь сделать, с оговоркой, что рассматриваемый оценщик устарел; это может иметь смысл брать идеи от него и определять вашу собственную model_fn.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню