Во входной форме плотного слоя (т. Е. Feature_layer в этом коде) необходимо указать высоту, ширину и каналы (т. Е. В случае, когда серое изображение упоминается как «1» или для RGB упоминается как «3») вместе с размером пакета .
Порядок формы ввода: Batch_Size, Высота, ширина, Каналы . Если мы не будем указывать размер партии, то модель примет Нет, Высота, ширина, Каналы
batch_size = 32
feature_layer = tf.keras.layers.DenseFeatures(feature_columns, name='fl', input_shape=(batch_size, H, W,C))
train_ds = df_to_dataset(train, batch_size=batch_size)
val_ds = df_to_dataset(val, shuffle=False, batch_size=batch_size)
test_ds = df_to_dataset(test, shuffle=False, batch_size=batch_size)
# layers
# no difference between acivation functions and layers
relu = tf.keras.layers.LeakyReLU(alpha=0.1)
# model
model = tf.keras.Sequential()
if len(dataframe.index)<100:
#model.add(layers.Input(shape=(batch_size,)))
model.add(feature_layer)
model.add(layers.Dense(64, activation=relu, name='1'))
model.add(layers.Dense(64, activation=relu, name='2'))
model.add(layers.Dense(1, activation='sigmoid'))
elif 100<len(dataframe.index)<1000:
model.add(feature_layer)
model.add(layers.Dense(128, activation=relu, name='1'))
model.add(layers.Dense(128, activation=relu, name='2'))
model.add(layers.Dense(1, activation='sigmoid'))
elif 1000<len(dataframe.index):
model.add(feature_layer)
model.add(layers.Dense(128, activation=relu, name='1'))
model.add(layers.Dense(128, activation=relu, name='2'))
model.add(layers.Dense(128, activation=relu, name='3'))
model.add(layers.Dense(1, activation='sigmoid'))