LSTM с кератом

У меня есть некоторые данные обучения x_train и некоторые соответствующие метки для этого x_train называемого y_train . Вот как построены x_train и y_train :

 train_x = np.array([np.random.rand(1, 1000)[0] for i in range(10000)]) train_y = (np.random.randint(1,150,10000)) 

train_x имеет 10000 строк и 1000 столбцов для каждой строки. train_y имеет метку между 1 и 150 для каждого образца в train_x и представляет собой код для каждого примера train_x.

У меня также есть образец под названием sample, который представляет собой 1 строку с 1000 столбцами, которую я хочу использовать для предсказания на этой модели LSTM. Эта переменная определяется как

 sample = np.random.rand(1,1000)[0] 

Я пытаюсь обучать и прогнозировать LSTM по этим данным, используя Keras. Я хочу использовать этот вектор функций и использовать этот LSTM для предсказания одного из кодов в диапазоне от 1 до 150. Я знаю, что это случайные массивы, но я не могу опубликовать данные, которые у меня есть. Я пробовал следующий подход, который, как я считаю, должен работать, но сталкиваюсь с некоторыми проблемами

  model = Sequential() model.add(LSTM(output_dim = 32, input_length = 10000, input_dim = 1000,return_sequences=True)) model.add(Dense(150, activation='relu')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) history = model.fit(train_x, train_y, batch_size=128, nb_epoch=1, verbose = 1) model.predict(sample) 

Любая помощь или корректировки этого конвейера были бы замечательными. Я не уверен, правильно ли output_dim . Я хочу передать LSTM на каждый образец данных измерения 1000, а затем воспроизвести конкретный код, который находится в диапазоне от 1 до 150. Спасибо.

One Solution collect form web for “LSTM с кератом”

Я вижу по крайней мере три вещи, которые вам нужно изменить:

  1. Измените эту строку:

     model.add(Dense(150, activation='relu')) 

    чтобы:

     model.add(Dense(150, activation='softmax')) 

    поскольку выход 'relu' качестве активации делает ваш выход неограниченным, тогда как он должен иметь вероятностную интерпретацию (поскольку вы используете categorical_crossentropy ).

  2. Изменение потери или цели:

    Когда вы используете categorical_crossentropy вам нужно изменить цель, чтобы быть одним горячим кодированным вектором длины 150. Другой способ – оставить цель, но изменить потерю на sparse_categorical_crossentropy .

  3. Измените целевой диапазон:

    Keras имеет индексирование массива на основе 0 (как в Python , C и C++ поэтому ваши значения должны быть в диапазоне [0, 150) вместо [1, 150] .

  • Предсказание следующего слова модели LSTM из примера Tensorflow
  • TensorFlow dynamic_rnn регрессион: несоответствие размера ValueError
  • c_state и m_state в Tensorflow LSTM
  • Использовать код учебника LSTM для предсказания следующего слова в предложении?
  • Как изменить функцию стоимости seq2seq для дополненных векторов?
  • Прогнозирование временных рядов данных с помощью PyBrain Neural Networks
  • LSTM Autoencoder не работает, когда скрипт работает на более крупном наборе данных
  • Тестирование классификации чувств Keras с помощью model.predict
  • Python - лучший язык программирования в мире.