Моя модель - это попытка предсказать значения в линейной регрессии после y = 2x + 5. Поэтому мои тренировочные данные напоминают следующее:
x_train = [0, 1, 2, 3, 4, ...] and y_train = [5, 7, 9, 11, 13, ...]
Моя модель Keras выглядит следующим образом:
`model = tf.keras.Sequential([
tf.keras.layers.Dense(16, activation='relu', input_dim=1),
tf.keras.layers.Dense(1, activation='linear')
])
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mse'])
model.fit(x_train, y_train, epochs=1000, batch_size=10)`
После получения хорошей точности проверки у меня возникло желание посмотреть на весы и уклоны моей модели, чтобы рассчитать выходной сигнал с учетом входных данных, потому что я хочу понять, как работает простая нейронная сеть. При выполнении
for l in model.layers:
print(l.get_weights())
[array([[-0.10382611, 0.48899287, -0.36912352, -0.11604425, 0.03658517,
0.546786 , -0.0094437 , 0.5393126 , -0.36325318, -0.20389882,
-0.00112574, -0.39811927, -0.25433052, -0.16315842, 0.6172162 ,
-0.47300738]], dtype=float32), array([ 0. , 1.1705374 ,
0. , 0. , -0.41323203, 0.97515434, 0. ,
0.99699414, 0. , 0. ,-0.2316811 , 0. ,
0. , 0. , 1.4638424 , 0. ], dtype=float32)]
[array([[-0.30404267],
[ 0.91265625],
[ 0.3578334 ],
[-0.23462006],
[-0.33843294],
[ 1.080244 ],
[-0.5933689 ],
[ 1.0348322 ],
[ 0.47716653],
[ 0.18852347],
[-0.21219982],
[ 0.45529807],
[ 0.39576346],
[-0.05013525],
[ 0.67550814],
[-0.19761673]], dtype=float32), array([0.7426254], dtype=float32)]
я достигаю следующих весов и смещений. У меня сложилось впечатление, что если бы я бросил значение 10, я бы ожидал значение 25в качестве вывода (или очень близко). Однако, когда я пытаюсь сделать математику самостоятельно, я не так близок. В настоящее время я понимаю, как это должно работать:
- Умножьте n-й элемент массива весов на 10 и добавьте n-й элемент массива смещения
- Возьмите n-й результат и умножьтес помощью n-го элемента второго массива весов и добавления n-го элемента второго массива смещения
- Результат должен быть 25 (или очень близко)
Не понимаю, как это должноработа