Я пытаюсь запустить нейронную сеть, используя keras в python, который имеет в качестве входов 2 значения и выходы 3. Входы представляют собой собственные частоты, а выходы представляют эквивалентную ледяную нагрузку. Проблема в том, что после того, как модель завершает свое обучение, кажется, что она обучена только для прогнозирования одного входа, а не всех трех. Модель является регрессией, а не классификацией. Здесь я представляю свой код
seed = 9
np.random.seed(seed)
# import dataset
dataset=np.loadtxt("Final_test_matrix_new_3_digits.csv", delimiter=",")
# Define dataset
Y=dataset[:, 0:3]
X=dataset[:, 3:5]
#Categorize data
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3,
random_state = seed)
# create model
model = Sequential()
model.add(Dense(12, input_dim=2,activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(3, init='uniform', activation='relu'))
# compile the model
model.compile(loss='mean_squared_logarithmic_error', optimizer='adam',
metrics=['accuracy'])
# checkpoint
filepath="weights.best_12_8_8_neurons.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1,
save_best_only=True, mode='max')
callbacks_list = [checkpoint]
# fit the model
history=model.fit(X_train, Y_train, validation_split=0.1, epochs=100000,
batch_size=10,callbacks=callbacks_list)
# evaluate the model
scores = model.evaluate(X_test, Y_test)
print ("Accuracy: %.2f%%" %(scores[1]*100))
Точность модели, согласно Python, составляет 65%, но этот факт не влияет на точность выходов, поскольку точность второго выхода ниже, чем первого, а точность третьего выхода равна почти 0. Основная цель кода - создать регрессионную модель, в которой все выходные данные будут иметь одинаковую точность. Далее показаны точность модели, потери модели и прогнозы для каждого из выходных сигналов соответственно: