API данных Tensorflow и модель keras

#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)