Я пытаюсь определить DNN, который предсказывает параметры для функции. Например: параметры a и b должны быть предсказаны, чтобы функция f (x) = a * x + b соответствовала данным y.
Каждая запись данных y представляет собой список значений.
Мне не удалось создать функцию потерь.
Что я пробовал:
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.optimizers import Adam
from sklearn.metrics import mean_squared_error
# Example Data
y = np.array([[1,2,3], [0,1,4],[]])
y = y[:-1]
y = y.reshape(2,1)
x = np.array([[3,3,2], [4,5,1]]) # any features
def f(x, a, b):
return a*x + b
def loss_function(y_true, y_pred):
"""
:param y_true: y from above
:param y_pred: predicted params a and b
"""
x_func = [1,3,6] # fixed
y_func = [f(x_func[i], y_pred[0], y_pred[1]) for i in range(3)]
L = mean_squared_error(y_func, y_true)
return L
model = Sequential()
model.add(Dropout(0.2, input_shape=(3,)))
model.add(Dense(2, activation='relu'))
opt = Adam(lr=0.001)
model.compile(loss=loss_function, optimizer=opt)
model.fit(x, y)
Кто-нибудь знает решение?