You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中.fit()传入NumPy数组与tf.data.Dataset的区别及标签指定问询

如何用tf.data.Dataset.from_tensor_slices正确指定输入与标签

TensorFlow和Keras是通过Dataset返回的**(输入数据, 标签数据)**元组结构来区分两者的,from_tensor_slices的核心用法就是传入符合这个结构的数据源,以下是几种常见场景的实现方式:

1. 单输入单标签(最常用场景)

如果你的输入和标签是两个独立的数组,直接将它们打包成元组传入from_tensor_slices即可,TensorFlow会自动把元组的第一个元素识别为输入,第二个识别为标签:

import tensorflow as tf
import numpy as np

# 示例数据:100张28x28的灰度图 + 对应分类标签
X = np.random.rand(100, 28, 28)
y = np.random.randint(0, 10, size=(100,))

# 创建Dataset:传入(input, label)元组
dataset = tf.data.Dataset.from_tensor_slices((X, y))

# 预处理:打乱+分批
dataset = dataset.shuffle(buffer_size=100).batch(32)

# 训练时无需传入y参数
model.fit(dataset, epochs=5)

2. 多输入单标签

如果模型需要多个输入(比如文本特征+图像特征),先把所有输入打包成一个元组/列表,再和标签组成外层元组:

# 示例多输入数据
text_features = np.random.rand(100, 100)  # 100条100维文本特征
image_features = np.random.rand(100, 28, 28)  # 100张28x28图像
y = np.random.randint(0, 2, size=(100,))  # 二分类标签

# 创建Dataset:((输入1, 输入2), 标签)
dataset = tf.data.Dataset.from_tensor_slices(((text_features, image_features), y))
dataset = dataset.batch(32)

# 模型的输入层要对应多输入结构,fit会自动匹配
model.fit(dataset, epochs=5)

3. 单输入多标签

如果需要同时预测多个标签(比如分类标签+回归值),把多个标签打包成元组即可:

X = np.random.rand(100, 28, 28)
class_label = np.random.randint(0, 10, size=(100,))  # 分类标签
regression_label = np.random.rand(100, 1)  # 回归任务标签

# 创建Dataset:(输入, (标签1, 标签2))
dataset = tf.data.Dataset.from_tensor_slices((X, (class_label, regression_label)))
dataset = dataset.batch(32)

# 模型的输出层要对应多标签结构,fit会自动匹配
model.fit(dataset, epochs=5)

4. 用map调整Dataset结构

如果原始数据的结构不符合(input, label)格式(比如输入和标签混在同一个数组里),可以用map函数拆分转换:

# 原始数据:每行前28*28个元素是输入,最后1个是标签
raw_data = np.hstack([X.reshape(100, -1), y.reshape(-1, 1)])
dataset = tf.data.Dataset.from_tensor_slices(raw_data)

# 定义拆分函数
def split_input_label(data):
    input_data = data[:-1]  # 取前n-1个元素作为输入
    input_data = tf.reshape(input_data, (28, 28))  # 还原图像形状
    label = data[-1]  # 取最后1个元素作为标签
    return input_data, label

# 应用map转换结构
dataset = dataset.map(split_input_label).shuffle(100).batch(32)

核心总结

只要保证Dataset的每个元素都遵循**(输入结构, 标签结构)**的格式,Keras的fit方法就能自动识别并匹配模型的输入与输出。from_tensor_slices会根据你传入的嵌套结构(元组、列表)生成对应的Dataset元素,无需额外的"指定标签"配置。

内容的提问来源于stack exchange,提问作者Luca Sagoleo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:50:30