Модель глубокого обучения Keras всегда дает один и тот же подход в обучении

Я хочу сделать прогноз с Керасом. Но это дает всегда одинаковую ценность при обучении. Но потери снижаются во время тренировок

Я пытаюсь предсказать параметры производства. Некоторые примеры приведены ниже

Данные

Поэтому я хочу в основном предсказать параметр fill_press от других. Мой код здесь:

x = pd.concat([volume, injector, filling_time, machine], axis=1)


x_train, x_test,y_train,y_test = train_test_split(x,y,test_size=0.2, random_state=1)



predicter = Sequential()

predicter.add(Dense(units=9, use_bias = True,  kernel_initializer = 'RandomUniform', activation = 'linear', input_dim = 9)) #Input Layer

predicter.add(Dense(units=7, use_bias = True,  kernel_initializer = 'RandomUniform', activation = 'linear'))

predicter.add(Dense(units=4, use_bias = True,  kernel_initializer = 'RandomUniform', activation = 'linear'))

predicter.add(Dense(units=1, kernel_initializer = 'RandomUniform', activation = 'linear'))

predicter.compile(optimizer = "sgd", loss = 'mean_absolute_error', metrics = ['accuracy'])

predicter.fit(x_train, y_train, batch_size =10, epochs = 1000)



y_pred = predicter.predict(X_test)

Что я должен изменить? Также я не уверен, что моя модель верна. Есть ли у вас какие-либо рекомендации?

Как вы можете видеть, всегда один и тот же (0,1333) от начала до конца.

Также я должен подчеркнуть, что у меня достаточно мало данных.

Тренировочный результат:

Epoch 985/1000
45/45 [==============================] - 0s 337us/step - loss: 0.0990 - acc: 0.1333
Epoch 986/1000
45/45 [==============================] - 0s 289us/step - loss: 0.1006 - acc: 0.1333
Epoch 987/1000
45/45 [==============================] - 0s 266us/step - loss: 0.1003 - acc: 0.1333
Epoch 988/1000
45/45 [==============================] - 0s 355us/step - loss: 0.0997 - acc: 0.1333
Epoch 989/1000
45/45 [==============================] - 0s 199us/step - loss: 0.1003 - acc: 0.1333
Epoch 990/1000
45/45 [==============================] - 0s 167us/step - loss: 0.1001 - acc: 0.1333
Epoch 991/1000
45/45 [==============================] - 0s 200us/step - loss: 0.0997 - acc: 0.1333
Epoch 992/1000
45/45 [==============================] - 0s 222us/step - loss: 0.0987 - acc: 0.1333
Epoch 993/1000
45/45 [==============================] - 0s 304us/step - loss: 0.0984 - acc: 0.1333
Epoch 994/1000
45/45 [==============================] - 0s 244us/step - loss: 0.1001 - acc: 0.1333
Epoch 995/1000
45/45 [==============================] - 0s 332us/step - loss: 0.1006 - acc: 0.1333
Epoch 996/1000
45/45 [==============================] - 0s 356us/step - loss: 0.0999 - acc: 0.1333
Epoch 997/1000
45/45 [==============================] - 0s 332us/step - loss: 0.1014 - acc: 0.1333
Epoch 998/1000
45/45 [==============================] - 0s 394us/step - loss: 0.0988 - acc: 0.1333
Epoch 999/1000
45/45 [==============================] - 0s 269us/step - loss: 0.1013 - acc: 0.1333
Epoch 1000/1000
45/45 [==============================] - 0s 242us/step - loss: 0.0992 - acc: 0.1333

Всего 1 ответ


Я полагаю, поскольку у вас есть единица вывода и функция линейной активации для вашего последнего плотного слоя, вы выполняете регрессию.

Однако точность в тензорном потоке предназначена для использования в задачах классификации. См. Документацию: https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Accuracy .


Есть идеи?

10000