Бинарная классификация последовательностей с Keras и LSTM - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь использовать последовательность чисел (фиксированной длины), чтобы предсказать двоичный вывод (1 или 0), используя Keras и рекуррентную нейронную сеть.

Каждый обучающий пример / последовательность имеет 10 временных шагов, каждый из которых содержит последовательность из 5 чисел, а выходные данные обучения состоят из 1 или 0.

Я пытался реализовать это с помощью Keras, но потери перестают уменьшаться после первой эпохи обучения.

Входные данные для обучения следующие: (с добавлением нуля)

array([[[0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        ...,
        [1.24829336, 0.96461449, 3.35142857, 0.74675   , 0.776075  ],
        [1.248303  , 0.96427925, 0.        , 1.317225  , 1.317225  ],
        [1.24831488, 0.96409169, 2.74857143, 1.353775  , 1.377825  ]],

       [[0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        ...,
        [1.24969672, 0.96336315, 0.        , 1.319725  , 1.319725  ],
        [1.24968077, 0.96331624, 0.        , 1.33535   , 1.33535   ],
        [1.24969598, 0.96330252, 5.01714286, 1.3508    , 1.3947    ]],

       [[0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        ...,
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        [1.25715364, 0.95520672, 2.57714286, 1.04565   , 1.0682    ],
        [1.25291274, 0.96879701, 7.76      , 1.311875  , 1.379775  ]],

       ...,

       [[0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        [0.        , 0.        , 0.        , 0.        , 0.        ],
        ...,
        [1.24791079, 0.96561021, 4.44      , 0.7199    , 0.75875   ],
        [1.25265263, 0.96117379, 2.09714286, 0.7636    , 0.78195   ],
        [1.25868651, 0.96001674, 3.01142857, 1.35235   , 1.3787   ]]])

Результаты обучения следующие:

array([[0.],
       [0.],
       [0.],
       ...,
       [0.],
       [0.],
       [0.]])

Это модель, которую я пытался тренировать:

#Model 
model = Sequential()
model.add(LSTM(100, input_shape= (10, 5)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, validation_data = (X_test, y_test), epochs = 100, batch_size = 1000)
...