如何规范化BatchDataset并在模型中使用它?



我有一个规范化BatchDataset的问题。我尝试了很多不同的方法,但我总是得到一些错误,例如……

train_ds = tf.keras.preprocessing.image_dataset_from_directory(training_folder,
image_size=(256, 256),
label_mode="binary")                                                      
valid_ds = tf.keras.preprocessing.image_dataset_from_directory(validation_folder,
image_size=(256, 256),
label_mode="binary")   

我得到了这个数据集的形状。

<BatchDataset shapes: ((None, 256, 256, 3), (None, 1)), types: (tf.float32, tf.float32)>

如何规范化这个数据集?

还有我的模型。fit不工作,但我找不到问题。

num_classes = 2
input_shape = (224, 224, 3)
model = keras.Sequential(
[
keras.Input(shape=input_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(num_classes, activation="softmax"),
]
)
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
history = model.fit(train_ds, 
epochs=5,
batch_size=128,
validation_data = valid_ds)

有什么建议吗?谢谢! !

尝试使用map:

train_ds = train_ds.map(lambda x, y: (tf.divide(x, 255), y))

我还建议你在"sigmoid"激活的最后一层使用1个神经元

您指定图像数据集中的图像尺寸为256 × 256,但在您的模型中您指定的输入形状为224 × 224。要重新调整图像输入,将其直接放在输入层

之后
tf.keras.layers.experimental.preprocessing.Rescaling(1/255)

相关内容

  • 没有找到相关文章

最新更新