我不确定我的答案是否正确(#note是我的答案)
def process_image(data):
r""" [0,255] -> [-1, 1]"""
是否意味着对图像数据进行标准化?但我没有看到这种语法
img = data['image']
分类
lab = data['label']
img = (tf.cast(img, tf.float32) / 255.0 - 0.5) * 2.0
图像-> float32格式(0,255)->归一化为(-1,1) 返回img,实验室
def create_image_dataset(ds, batch_size=256, training=None):
if training:
ds = ds.shuffle(1000)
我知道它的意思是随机地随机播放数据集,但是什么是1000呢?
ds = ds.batch(batch_size).map(process_image).prefetch(
tf.data.experimental.AUTOTUNE)
关于部分预取,是否意味着程序可以自动并行选择最佳线程数?
return ds
train = create_image_dataset(mnist['train'], batch_size=256, training=True)
image_shape = tf.data.experimental.get_structure(train)[0].shape[1:]
print("Image shape:", image_shape)
get_structure是什么意思?与重塑功能相同吗?
非常感谢
答案 0 :(得分:1)
在ds = ds.shuffle(1000)
中,1000
是指buffer_size
。在tensorflow docs中,这表示新数据集将从中采样的数据集中的元素数。
关于prefetch
,tensorflow docs是指预取作为步骤s+1
的输入管道读取数据,而模型正在执行步骤s
,重叠了培训步骤的预处理和模型执行阶段。它使用后台线程和内部缓冲区在请求输入之前从输入数据集中预提取元素。可以手动调整要预取的元素数量,也可以将其设置为tf.data.experimental.AUTOTUNE
,这将提示tf.data
运行时在运行时动态调整值 。
从tensorflow docs,get_structure
返回Dataset
或Iterator
的元素的类型说明,在您的情况下,该元素用于获取图像形状。