Слой Flatten
предназначен для преобразования тензоров 3D + в 2D. Я предполагаю, что эта модель была разработана для двоичного MNIST, который имеет другую форму ввода, и вы пытались использовать ее в другом наборе данных. В наборе данных Boston Housing Dataset уже есть 2D-ввод, поэтому здесь нет смысла. Вы можете выполнить этот запуск, изменив форму ввода, но это не имеет смысла:
keras.layers.Flatten(input_shape=(13,)),
Все, что вам нужно сделать, это удалить его, и он будет работать нормально. Затем вам придется изменить функцию потерь, метрики и окончательную функцию активации, потому что вы имеете дело с проблемой регрессии. Окончательный исправленный код:
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
data = keras.datasets.boston_housing
(x_train , y_train) , (x_test , y_test) = data.load_data()
model = keras.Sequential([
keras.layers.Dense(128 , activation="relu"),
keras.layers.Dense(1)
])
model.compile(optimizer="adam" , loss="mae")
model.fit(x_train , y_train ,epochs=5 )
test_loss = model.evaluate(x_test , y_test)
print("test loss: ", test_loss)
32/102 [========>.....................] - ETA: 0s - loss: 5.9563
102/102 [==============================] - 0s 682us/sample - loss: 6.7218
test loss: 6.721758244084377