Нейронная сеть с несколькими входными параметрами и несколькими выходными параметрами - PullRequest
0 голосов
/ 01 декабря 2019

Я начал иметь дело с Tensorflow. В упражнении по Udacity я научился создавать нейронную сеть, которая может конвертировать градусы Цельсия в градусы Фаренгейта. Для обучения нейронной сети было приведено 3 примера:

celsius_q = np.array([-40, -10, 0, 8, 15, 22, 38], dtype=float)
fahrenheit_a = np.array([-40, 14, 32, 46, 59, 72, 100], dtype=float)

Теперь я хотел бы заняться более сложной проблемой. У меня есть серия измерений с 3 сериями измерений в качестве примеров. Для каждой серии измерений у меня есть 4 входных параметра (входы) и 3 соответствующих измеренных значения (выходы).

data

Теперь я хочу создать нейронную сеть и дать ей 3 серии измерений для обучения. Затем я хочу ввести набор входных параметров, и нейронная сеть должна дать мне выходные данные.

Я взял существующий код из моего упражнения на Udacity и попытался преобразовать его в свой вариант использования.

К сожалению, я еще не достиг успеха. Код здесь:

Импорт

import tensorflow as tf
import numpy as np

Настройка данных обучения

inputMatrix = np.array([(100,230,0.95,100),
                        (200,245,0.99,121),
                        ( 40,250,0.91,123)],dtype=float)
outputMatrix = np.array([(120, 5,120),
                         (123,24,100),
                         (154, 3,121)],dtype=float)
for i,c in enumerate(inputMatrix):
print("{}Input Matrix={}Output Matrix".format(c,outputMatrix[i]))

Создание модели

l0 = tf.keras.layers.Dense(units = 4, input_shape = [4])
l1 = tf.keras.layers.Dense(units = 64)
l2 = tf.keras.layers.Dense(units = 128)
l3 = tf.keras.layers.Dense(units = 3)

model = tf.keras.Sequential([l0,l1,l2,l3])

Компиляция модели

model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.1))

Обучение модели

history = model.fit(inputMatrix,outputMatrix,epochs=500,verbose=False)
print("Finished training the model!")

Отображение статистики обучения

import matplotlib.pyplot as plt
plt.xlabel('Epoch Number')
plt.ylabel('Loss Magnitude')
plt.plot(history.history['loss'])

Использование модели для прогнозирования значений

print(model.predict([120,260,0.98,110]))`

Я думаю, чтопроблема в том, что в разделе «Настройка данных обучения» 3 серии измерений не реализованы правильно.

Если я выполню код в разделе «Обучение модели», обучение закончится очень быстро, чего не должно бытьс такой сложной задачей.

Я надеюсь, что кто-то может помочь мне научиться шаг за шагом и решить эту проблему.

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