Я запускаю свой набор упражнений 30k на библиотеке python Keras для нейронной сети (модель «последовательный»).Получение 0 или 1 как значений вероятности в нейронной сети Последовательная модель Keras
Когда я устанавливаю модель и вычисляет вероятности на тестовом наборе (size = 13k), тогда я получаю только 0 или 1. В то время как я должен получить некоторые дробные значения, такие как 0,62, 0,42, 0,31 и т. Д.
Я пробовал использовать class_weight и настраивал его на «авто» или «сбалансированный», но я не смог решить эту проблему.
Выход не является целым типом, его тип с плавающей точкой.
Ниже приведен код
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
seed = 8
np.random.seed(seed)
model = Sequential()
model.add(Dense(9, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(5, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
from keras.optimizers import SGD
model.compile(loss='binary_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True), metrics=['accuracy'])
trainx = X_train.as_matrix()
trainy = y_train.as_matrix()
import time as time
start = time.time()
model.fit(trainx, trainy, nb_epoch=10, batch_size=10, verbose = 2, class_weight ='auto')
print (time.time() - start)
X_test = X_test.as_matrix()
y_test = y_test.as_matrix()
proba = model.predict_proba(X_test, batch_size=10)
И значения PROBA все 0s. Данные имеют только 2% случаев неплатежеспособности, поэтому его несбалансированный класс.
Не могли бы вы показать нам свой код здесь, мы можем помочь вам лучше. – Arman
Начните с изучения ввода конечного слоя. Softmax может давать одноразовый выход, если веса имеют большую величину. –
Вместо этого вы пытаетесь использовать 'model.predict()'? Также было бы полезно, если бы вы могли дать нам образец набора данных, поскольку иногда проблема там (например, проблема нормализации) –