высокая точность в многослойной классификации в керасе, но прогнозы хуже - PullRequest
0 голосов
/ 27 февраля 2020

У меня проблема с многослойной классификацией, я использовал следующий код, но точность проверки в первые эпохи возросла до 99%. Весь мой ввод 1245x1024, поэтому каждая строка означает один спектр (так что есть 1245 примеров спектра). Таким образом, один спектр (1x1024). Результатом являются мои метки. У меня есть 245 различных классов (здесь элементы). Один спектр содержит один или два элемента. один вывод для одного прогноза: (1x245)

    x = pd.read_csv('spectrum_max2proSpund245.csv') 
   y1 = pd.read_csv('nuclides_max2proSpund245.csv', delimiter=';')

   num_features = 1024
   model = Sequential()
   model.add(Dense(230, kernel_initializer='normal', input_shape=(num_features,), 
        activation='tanh')) 
   model.add(Dropout(0.25))
   model.add(Dense(245, kernel_initializer='normal', activation='sigmoid')) 
   model.summary()

   X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=42, test_size=0.2)

, вот как я собираю свою модель

   model.compile(loss='binary_crossentropy',optimizer='Adam',metrics=['accuracy'])

, и вот как я подхожу и оцениваю

   model.fit(X_train, y_train, epochs=20, validation_data=(X_test, y_test), batch_size=60)

   model.evaluate(X_test, y_test, batch_size=60)

модель оценка и подбор модели дают одинаковые результаты, но когда я смотрю вручную в своем прогнозе, возможно, только 19% правильных прогнозов. что не так в моем коде?

1 Ответ

0 голосов
/ 28 февраля 2020

В каждом классе должно быть одинаковое количество наблюдений. Если в одном классе больше дел, чем в других, он будет доминировать в обучении. В вашем учебном наборе перечислите все классы и сколько записей у вас есть для каждого. Если есть какие-то дисбалансы, вы можете попытаться выровнять их, добавляя / вычитая данные или комбинируя классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...