#tensorflow #tokenize #keras #lstm
#tensorflow #маркировать #keras #lstm
Вопрос:
Меня смущает входной вектор в модели LSTM, данные, которые я использую, — это текстовые данные, например, 1000 предложений. У меня есть два вопроса о входном слое LSTM:
1. Если бы я обозначил эти предложения в векторы (мы можем назвать это векторами предложений), есть ли в Keras способ сделать векторы предложений с учетом документа? Должно быть на уровне слов, верно?
2. Второй вопрос — тип тензора 3D в LSTM. У меня есть 1000 предложений (образцов), а time_step будет равен 1, если я хочу, чтобы LSTM читал один документ на каждом временном шаге, это правильно? Последнее — это входное измерение, это входное измерение — это измерение слова (100) в каждом предложении или сколько слов наблюдается на каждом временном шаге (10)?
Таким образом, тензор LSTM должен быть (1000, 1, 10) или (1000, 1, 100)
Ответ №1:
Я не знаю ответа на первый вопрос. У меня нет опыта работы с Keras. Тем не менее, у меня есть некоторый опыт работы с Tensorflow.
Что касается второго вопроса, вы имели в виду «Я хочу, чтобы LSTM читал одно предложение на каждом временном шаге». Если вы намерены работать с последовательностью предложений, я полагаю, это то, что вы хотите сделать, поскольку используете LSTM, тогда вам нужно определить длину последовательности (количество предложений, которые будут обработаны в одной конкретной последовательности). последовательность). Длина последовательности может быть определена с помощью time_step . Поэтому установка time_step = 1 была бы неправильной. Если вы работаете с векторами предложений, то последним является векторное измерение для встраивания предложений.
Например, если у вас в документе 1000 предложений, каждое предложение представлено вектором размером 100, а длина последовательности равна 5 (вы хотите обработать максимум 5 предложений в одной последовательности), тогда размеры тензора будут (Нет, 5100). Первый — «Нет», чтобы вы могли решить, сколько последовательностей вы хотите передать в сеть позже (обучение мини-пакету).
Ответ №2:
Формат ввода (nb_samples, time_steps, input_dim). В вашем случае количество выборок равно количеству предложений. Временные шаги — это количество слов в предложении, так что это будет количество слов в предложении, которое содержит максимальное количество слов (другие предложения должны быть дополнены, чтобы соответствовать этой длине). input_dimension — это количество функций, используемых для представления каждого слова. Например, если вы используете встраивание word2vec, скажем, со 100 или 200 размерами (объектами), это будет ваш input_dimension .