根据 Tensorflow documentation,填充始终用零而不是 1。
有没有办法将填充更改为
?如果没有,张量流数据集的最佳替代方案是什么?
这是我的代码示例:
def resize_with_pad(image, label):
image = tf.image.resize_with_pad(image=image,
target_height=resized_wh,
target_width=resized_wh,
method=ResizeMethod.BILINEAR,
antialias=False)
return image, label
def create_tf_dataset_pipeline(tf_dataset):
tf_dataset = tf_dataset.map(load_image, num_parallel_calls=AUTOTUNE)
tf_dataset = tf_dataset.map(normalize, num_parallel_calls=AUTOTUNE)
tf_dataset = tf_dataset.map(resize_with_pad, num_parallel_calls=AUTOTUNE)
tf_dataset = tf_dataset.batch(batch_size)
tf_dataset = tf_dataset.prefetch(AUTOTUNE)
return tf_dataset
train_data = tf.data.Dataset.from_tensor_slices((x_train_filepaths, y_train_class))
train_data = create_tf_dataset_pipeline(train_data)
我尝试调整图像大小和填充图像并将其保存在目录中(即前端加载处理),但这非常不灵活,因为每次我想训练不同大小的模型时都需要创建一个新的数据集。如果我能用张量流动态地做到这一点那就更好了。
我刚刚找到了一个临时解决方案。
您可以更改
def pad(..., constant_values=0)
文件中的功能array_ops.py
,
张量流库文件夹下的某个位置,例如 ..\EnvsName\Lib\site-packages\tensorflow\python\ops\array_ops.py
,到 def pad(..., constant_values=255)
并保存。
然后你可以在调用函数时用白色背景([255,255,255],或者你说的“个”)填充
tf.image.resize_with_pad
。