这是来自https://www.tensorflow.org/federated/tutorials/federated_learning_for_image_classification的代码片段
该示例是使用联邦学习的图像分类问题。下面的函数是 emnist 数据的预处理函数(大小为 28*28)。任何人都可以帮助理解为什么数据被重塑为 -1 到 784 吗?据我了解,我们将其从二维数组转换为一维数组,因为它更易于处理。但我不确定为什么包含 -1。0 o 784 还不够吗?
NUM_CLIENTS = 10
NUM_EPOCHS = 5
BATCH_SIZE = 20
SHUFFLE_BUFFER = 100
PREFETCH_BUFFER=10
def preprocess(dataset):
def batch_format_fn(element):
"""Flatten a batch `pixels` and return the features as an `OrderedDict`."""
return collections.OrderedDict(
x=tf.reshape(element['pixels'], **[-1, 784]**),
y=tf.reshape(element['label'], **[-1, 1]**))
return dataset.repeat(NUM_EPOCHS).shuffle(SHUFFLE_BUFFER).batch(
BATCH_SIZE).map(batch_format_fn).prefetch(PREFETCH_BUFFER)