#tensorflow #keras
#tensorflow #keras
Вопрос:
Я пытаюсь настроить простой NN с помощью Dataset API, и я сталкиваюсь с ошибкой. Прямо сейчас у меня есть следующее:
Это NN:
def get_model(input_shape, n_outputs):
_input = tf.keras.Input(shape=input_shape)
x = tf.keras.layers.Dense(128, activation='relu')(_input)
x = tf.keras.layers.Dense(64, activation='relu')(x)
value_output = tf.keras.layers.Dense(1, activation='sigmoid', name='value_output')(x)
model = tf.keras.Model(inputs=_input, outputs=[value_output])
losses = {
"value_output": 'mean_squared_error'
}
model.compile(loss=losses, optimizer='adam')
return model
Это данные, которые я использую в NN
def preproces(item):
return item, 0.3
instance = np.array([26])
dataset = tf.data.Dataset.from_tensor_slices([instance])
dataset = dataset.map(preprocess)
m.fit(dataset)
И я продолжаю получать эту ошибку:
Ошибка значения: градиенты не предусмотрены ни для одной переменной: [‘dense_27 / kernel:0’, ‘dense_27/bias:0’, ‘dense_28/kernel:0’, ‘dense_28 /bias: 0’, ‘value_output_9/kernel:0’, ‘value_output_9/bias:0’].
Не уверен, чего не хватает, это такой простой NN.
Спасибо за вашу помощь в расширенном
Ответ №1:
Я хотел бы упомянуть, что ваши данные противоречивы: если ваша форма ввода [1] — ваша форма вывода должна быть [64].
Я preprocess()
соответствующим образом изменился.
Но я не смог воспроизвести вашу ошибку:
import tensorflow as tf
def get_model(input_shape, n_outputs):
_input = tf.keras.Input(shape=input_shape)
x = tf.keras.layers.Dense(128, activation='relu')(_input)
x = tf.keras.layers.Dense(64, activation='relu')(x)
value_output = tf.keras.layers.Dense(1, activation='sigmoid', name='value_output')(x)
model = tf.keras.Model(inputs=_input, outputs=[value_output])
losses = {
"value_output": 'mean_squared_error'
}
model.compile(loss=losses, optimizer='adam')
return model
def preprocess(item):
return item, [0.3]*64
import numpy as np
instance = np.array([26])
dataset = tf.data.Dataset.from_tensor_slices([instance])
dataset = dataset.map(preprocess)
m = get_model([1], 1)
m.compile(loss='mse')
m.fit(dataset)