如何为深度学习创建数据集?用Keras训练CNN时如何生成y_train?
嘿,我来帮你搞定这两个问题~
一、如何为深度学习创建数据集?
- 数据收集:先明确你的任务类型(比如图像分类、文本情感分析),再针对性找数据。如果是图像任务,你可以自己拍摄采集、用像MNIST、CIFAR这类公开数据集,或者合规爬取网络图片(一定要注意版权哦);文本任务的话,可以用公开语料库、爬取合法公开的文本内容。
- 数据清洗:把无效数据筛掉——比如图像里的模糊、损坏图片,文本里的乱码、重复内容。如果是数值类数据(比如图像像素),记得做归一化/标准化,比如把像素值缩到0-1之间,避免模型训练时出现不稳定的情况。
- 数据标注:如果是监督学习任务,必须给数据打标签。比如图像分类要标注每个图片的类别,目标检测要标注物体的边界框。小数据集可以手动标,大数据集可以用LabelImg(图像)、Prodigy(文本)这类工具来提高效率。
- 格式化存储:把数据转成模型易读取的格式,比如图像存成JPG/PNG,标签存在CSV里;或者用TFRecord、HDF5这类高效格式,方便后续批量读取训练。
- 划分数据集:一般要分成三个部分:训练集(占70%-80%,用来训练模型)、验证集(10%-15%,用来调参和监控过拟合)、测试集(10%-15%,用来评估模型最终性能)。
二、用train_test_split生成对应训练/测试标签的正确方式
你应该是没把原始标签y_train一起传入train_test_split函数里~这个函数支持同时拆分特征矩阵和标签数组,直接返回拆分后的训练特征、测试特征、训练标签、测试标签,一步到位。
给你个具体的代码示例:
from sklearn.model_selection import train_test_split # 假设你已经有原始特征x_train和原始标签y_train x_train_split, x_test_split, y_train_split, y_test_split = train_test_split( x_train, y_train, test_size=0.2, train_size=0.8, random_state=42 # random_state固定随机种子,保证每次拆分结果一致 )
拆分后:
x_train_split是80%的训练特征,y_train_split就是对应的80%训练标签x_test_split是20%的测试特征,y_test_split是对应的20%测试标签
之后你就可以用x_train_split和y_train_split来训练Keras的CNN模型啦。另外,如果是分类任务,记得把标签转成独热编码,这样才能和CNN的softmax输出层匹配:
from tensorflow.keras.utils import to_categorical y_train_onehot = to_categorical(y_train_split) y_test_onehot = to_categorical(y_test_split)
内容的提问来源于stack exchange,提问作者hamzasgd
相关产品推荐
相关产品推荐

