нейронная сеть возвращает классы вместо вероятностей - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть список из 70 тыс. Данных измерения 25000, которые я пытаюсь передать в нейронную сеть, чтобы получить классификацию из 20 различных вещей. Системе не хватает памяти, прежде чем я могу что-либо сделать. Так что я выступил с этой идеей. Поэтому я делю набор функций на 5 5000. Затем я передаю каждый из 5 наборов данных измерения 5000 в нейронную сеть. Тогда результат предсказания будет средним из 5.

Вот как я разделил данные:

datas_feature1=datas[:,0:5000]
datas_feature2=datas[:,5000:10000]
datas_feature3=datas[:,10000:15000]
datas_feature4=datas[:,15000:20000]
datas_feature5=datas[:,20000:25000]

Затем я передаю каждый из них в нейронную сеть:

model1 = Sequential()
model1.add(layers.Dense(300, activation = "relu", input_shape=(5000,)))
# Hidden - Layers
model1.add(layers.Dropout(0.4, noise_shape=None, seed=None))
model1.add(layers.Dense(20, activation = "softmax"))
model1.summary()

model1.compile(loss="categorical_crossentropy",
              optimizer="adam",
              metrics=['accuracy'])
model1.fit( np.array(vectorized_training1), np.array(y_train_neralnettr),
          batch_size=2000,
          epochs=10,
          verbose=1,
          validation_data=(np.array(vectorized_validation1), np.array(y_validation_neralnet)))
predict1= model1.predict(np.array(vectorized_validation1))

У меня есть тот же код для нейронной сети модели 2, обученной на наборе данных Feature2 и так далее. И в итоге я взял среднее из прогнозов.

Вот мой вопрос: предсказание из нейронной сети дает элементарный вектор, а не вероятность. Таким образом, взяв среднее из прогнозов, мы получим вектор 1 и 0. Как я могу измениться так, чтобы на самом деле я получил вероятность быть одним из 20 классов для каждого прогноза?

Можно ли попробовать мой метод?

Можете ли вы дать мне справку?

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