Tensorflow Keras预处理层

Tensorflow Keras预处理层,tensorflow,keras,Tensorflow,Keras,目前,我将所有预处理应用于数据集。 但是我发现我可以将预处理作为模型的一部分。 我了解到,层预处理在测试时处于非活动状态,但重新zizing层是什么? 例如: model = Sequential([ layers.experimental.preprocessing.Resizing(180, 180), layers.experimental.preprocessing.Rescaling(1./255), layers.Conv2D(16, 3, padding='same',

目前,我将所有预处理应用于数据集。 但是我发现我可以将预处理作为模型的一部分。 我了解到,层预处理在测试时处于非活动状态,但重新zizing层是什么? 例如:

model = Sequential([
  layers.experimental.preprocessing.Resizing(180, 180),
  layers.experimental.preprocessing.Rescaling(1./255),
  layers.Conv2D(16, 3, padding='same', activation='relu'),
  ...
如果我现在使用model.predict(img),会发生什么情况?img会自动调整大小吗?还是在预测之前我仍然需要重新调整img的大小


提前谢谢你

在评估/测试时,仅禁用以
Random
开头的预处理层

在您的情况下,将在每种情况下启用层
调整大小
重新调整大小

您可以在源代码中检查您感兴趣的层是否在其方法调用中使用了
training
布尔参数,并在
控制流\u util.smart\u cond
中使用该布尔值

例如,该层不会:

而图层会:

class Resizing(PreprocessingLayer):

    def call(self, inputs):
        outputs = image_ops.resize_images_v2(
        images=inputs,
        size=[self.target_height, self.target_width],
        method=self._interpolation_method)
    return outputs
class RandomFlip(PreprocessingLayer):

  def call(self, inputs, training=True):
    if training is None:
      training = K.learning_phase()

    def random_flipped_inputs():
      flipped_outputs = inputs
      if self.horizontal:
        flipped_outputs = image_ops.random_flip_left_right(flipped_outputs,
                                                           self.seed)
      if self.vertical:
        flipped_outputs = image_ops.random_flip_up_down(
            flipped_outputs, self.seed)
      return flipped_outputs

    output = control_flow_util.smart_cond(training, random_flipped_inputs,
                                          lambda: inputs)
    output.set_shape(inputs.shape)
    return output