Требуется небольшая корректировка в последнем Dense Layer
вашего Network
.
Поскольку вы хотите предсказать Numeric Value
, а проблема - Regression
, Last Dense Слой должен иметь только 1 Neuron/Unit
, а Activation Function
в Last Dense Layer
должен быть linear
.
Итак, замена кода
tf.keras.layers.Dense(10, activation='relu')
на
tf.keras.layers.Dense(1, activation='linear')
должна решить вашу проблему.
Полный рабочий код, чей model.predict(Xval).shape
будет (200,1)
, как показано ниже:
import numpy as np
import tensorflow as tf
f = lambda x: 2*x
Xtrain = np.random.rand(400,1)
ytrain = f(Xtrain)
Xval = np.random.rand(200,1)
yval = f(Xval)
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(1, activation='linear')
])
model.compile(optimizer='adam',
loss=tf.keras.losses.MeanSquaredError()
)
model.fit(Xtrain, ytrain, epochs=50, verbose=0)
Мы можем иметь несколько Units/Neurons
(равное количеству classes
) в Last Dense Layer
, если проблема Classification
и каждый выход представляет Probability
, соответствующий каждому Class
.