Это моя предполагаемая настройка: матрица функций с 913 выборками и 192 функции (913 192). Я классифицирую два результата, поэтому мои метки двоичные и имеют форму (913,1). 1 скрытый слой со 100 единицами (на данный момент). Все активации будут использовать tanh, а все потери — регуляризацию l2, оптимизированную с помощью SGD.
Код приведен ниже. Он был написан на Python с использованием платформы Keras (http://keras.io/), но мой вопрос не касается Keras
Код: Выделить всё
input_size = 192
hidden_size = 100
output_size = 1
lambda_reg = 0.01
learning_rate = 0.01
num_epochs = 100
batch_size = 10
model = Sequential()
model.add(Dense(input_size, hidden_size, W_regularizer=l2(lambda_reg), init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(hidden_size, output_size, W_regularizer=l2(lambda_reg), init='uniform'))
model.add(Activation('tanh'))
sgd = SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd, class_mode="binary")
history = History()
model.fit(features_all, labels_all, batch_size=batch_size, nb_epoch=num_epochs, show_accuracy=True, verbose=2, validation_split=0.2, callbacks=[history])
score = model.evaluate(features_all, labels_all, show_accuracy=True, verbose=1)
Используя приведенный выше код, я получаю точность обучающего и тестового набора в пределах 50–60 %. Возможно, я просто использую плохие функции, но я хотел проверить, что может быть не так, поэтому я вручную установил для всех меток и функций что-то, что должно быть предсказуемым:
Код: Выделить всё
labels_all[:500] = 1
labels_all[500:] = 0
features_all[:500] = np.ones(192)*500
features_all[500:] = np.ones(192)
Когда я запускаю это, я получаю точность обучения около 65%, а точность проверки — около 0%. Я ожидал, что обе точности будут чрезвычайно высокими/почти идеальными. Это неверно? Я думал, что все функции с чрезвычайно высокими значениями имеют одинаковую метку (1), а функции с низкими значениями получают метку 0.
В основном мне просто интересно, если мой код/ модель неверна или моя логика неверна.
Подробнее здесь: https://stackoverflow.com/questions/317 ... ementation