Tensorflow 2: использовать списки в качестве входных данных для функции потерь - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь определить 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)

Кто-нибудь знает решение?

...