【问题标题】:How to noramilze a BatchDataset and use it in a model?如何规范化 BatchDataset 并在模型中使用它?
【发布时间】:2021-05-15 15:54:56
【问题描述】:

我在规范化 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)>

如何规范化这个数据集?

此外,我的 model.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)

有什么建议吗? 谢谢!!

【问题讨论】:

  • 欢迎来到 SO Svenson!帮助您获得答案的两条建议:1)请在您的帖子中提出一个问题——您目前有两个问题在这里合并。 2)请发布您收到的错误。

标签: python tensorflow keras dataset training-data


【解决方案1】:

尝试使用map

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 2023-03-27
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 2012-10-18
      • 2014-07-15
      • 2011-03-08
      相关资源
      最近更新 更多