基于TensorFlow的归一化训练数据:代码中lambda的含义解析
TensorFlow归一化代码中lambda的作用详解
代码整体作用
这段代码的核心是把图像数据集的像素值从0-255的原始区间,缩放到0-1的归一化区间,适配模型训练的数值要求。
重点解释lambda部分
TensorFlow的数据集(比如这里的train_data)里的每一条数据都是**(图像数据x, 标签y)**的配对结构。train_data.map()方法的作用是对数据集中的每一条样本执行自定义处理,它需要传入一个能接收样本对并返回处理后样本对的函数。
这里的lambda x, y: (normalization_layer(x), y)是一个匿名函数,逻辑非常直接:
- 接收两个参数:
x代表当前样本的图像张量,y代表对应的分类标签 - 仅对图像
x应用归一化层normalization_layer(也就是执行x / 255的运算) - 标签
y完全保持原样,不做任何修改 - 返回处理后的新样本对:(归一化后的图像, 原标签),以此替换原数据集中的对应样本
等价写法(不用lambda)
如果觉得lambda不够直观,用普通函数能实现完全一样的效果:
def preprocess_sample(x, y): normalized_img = normalization_layer(x) return (normalized_img, y) train_data = train_data.map(preprocess_sample)
lambda只是这种简单逻辑下的简洁写法,省去了单独定义函数的步骤。
内容的提问来源于stack exchange,提问作者Osama Mohammed
相关产品推荐
相关产品推荐

