python - 数据预处理:keras 层 vs tf.image.resize
问题描述
我想预处理来自 tensorflow 2(版本 2.3.0)中的 'oxford_flowers102' 数据集的图像以训练初始 v3 网络。我找到了两种调整图像大小的方法,两者都有效,似乎都生成相同的输出。我不明白哪种解决方案更适合我的任务。你能解释一下哪种方式更好用吗?
- 用 tf.image.resize
IMAGE_RES = 229
dataset, dataset_info = tfds.load('oxford_flowers102', with_info=True, as_supervised=True)
dataset_info
test_set, training_set, validation_set = dataset['test'], dataset['train'], dataset['validation']
get_label_name = dataset_info.features['label'].int2str
image, label = next(iter(training_set))
image = tf.image.resize(image, (IMAGE_RES, IMAGE_RES)) / 255.0
_ = plt.imshow(image)
_ = plt.title(get_label_name(label))
plt.show()
- 带有 keras 层
IMAGE_RES = 229
dataset, dataset_info = tfds.load('oxford_flowers102', with_info=True, as_supervised=True)
dataset_info
test_set, training_set, validation_set = dataset['test'], dataset['train'], dataset['validation']
get_label_name = dataset_info.features['label'].int2str
resize_and_rescale = tf.keras.Sequential([
layers.experimental.preprocessing.Resizing(IMAGE_RES, IMAGE_RES),
layers.experimental.preprocessing.Rescaling(1. / 255)
])
image, label = next(iter(training_set))
_ = plt.imshow(image)
_ = plt.title(get_label_name(label))
result = resize_and_rescale(image)
_ = plt.imshow(result)
plt.show()
解决方案
技术上
调整层大小tf.keras.layers.Resizing
使用tf.image.resize()
“幕后”功能(证明)。
几乎
调整层允许在模型中内置预处理,以便在输入图像数据输入模型时对其进行预处理。tf.image.resize()
函数非常适合tf.data.Dataset.map()
方法,它在加载图像时实时预处理图像。
推荐阅读
- authentication - 我正在尝试使用 setHeaders 清理我的缓存,但是在注销后使用后退按钮,我可以到达上一个左页!帮我
- python - 导入 def 时 DLL 加载失败
- javascript - 如何仅在更新两个变量的状态后才执行函数?
- python - 如何在 Python 中合并某些列的值
- python - 如何在 Google Big Query 中为 Parquet 文件创建外部表以在 Airflow Dag 中运行
- python - 如何将 Pandas 数据框转换为以下(水平)形式?
- f# - 为什么我不能用do!当我想忽略结果时,在 F#
- next.js - Next js 在公用文件夹中找不到 favicon
- swift - 如何在 Swift 中创建一个空的彩色 CGImage 画布
- webpack - @angular/cli/plugins/webpack 的插件替换是什么?