Я тренирую рекуррентную нейронную сеть на основе LSTM для классификации текста, и у меня странное поведение.С одним и тем же кодом и одним и тем же обучающим набором я получаю совершенно другой уровень точности.
Я знаю, что нормально иметь другое значение, но иногда я получаю значение 40% точности, а другие 90%.Как это возможно?
Более того, иногда я зацикливаюсь на уровне точности, я имею в виду, что потери и точность не меняются в разные эпохи, поэтому оба значения остаются одинаковыми.Чем это объясняется?
Еще один аспект, который я не уверен, что я действительно понимаю, это факт заполнения моего входного текста (я использую обучение в пакетном режиме).Я думаю, поскольку я использую RNN, лучше использовать левый отступ.Вы знаете, как дополнить ввод?Лучше левый или правый отступ?
Последний вопрос - как выбрать номер слоя и номер узла.Я знаю, что для кого-то лучшим подходом является эксперимент, но некоторые предложения могут быть полезны.
Это реализация моего RNN:
sentence_indices = Input(shape=input_shape, dtype=np.int32)
embedding_layer = pretrained_embedding_layer(word_to_vec_map, word_to_index, emb_dim)
embeddings = embedding_layer(sentence_indices)
X = LSTM(128, return_sequences=True)(embeddings)
X = Dropout(0.5)(X)
X = LSTM(128)(X)
X = Dropout(0.5)(X)
X = Dense(num_activation, activation='softmax')(X)
X = Activation('softmax')(X)
model = Model(sentence_indices, X)
- слой вложений получен из GloVeМодель предварительно обучена.
- Я использую 5 категорий и 300 образцов более или менее
- Мой тренировочный набор не унифицирован
Буду признателен за любой намек на вопрос выше итакже некоторые предложения по улучшению моей нейронной сети.