【中小学AI人工智能教育】文本生成任务——名字生成(非序列补全模式)

【中小学AI人工智能教育】文本生成任务——名字生成(非序列补全模式)
Ai创想实验室是专门为中小学AI教育开发的教学平台包含了值计算、图像分类、音频分类、文本分类、数值回归、图像回归、图像分类回归、平衡杆、手写数字生成、文本生成等中小学人工智能学习类项目。无需编程基础、无需添加硬件、无需购买算力、无隐私担忧、无需师资培训即可进行教学实践。本文介绍文本生成模型的构建、数据清洗、训练、预测。使用非序列补全模式该模式要比序列补全模式训练稍微困难一点。一、搭建模型我们使用和上一篇相同的模型xml xmlnshttps://developers.google.com/blockly/xmlblock typenn_input id*dZ,qfrpS3!DeFPI6fW x56 y44field nameSHAPE(None, 10)/fieldfield nameNAMEinput_layer_1/fieldnextblock typenn_embedding idlQ,]5aDne8o9(.9cEfield nameINPUT_DIM600/fieldfield nameOUTPUT_DIM64/fieldfield nameINPUT_LENGTH10/fieldfield nameMASK_ZEROTRUE/fieldfield nameNAMEembedding_1/fieldnextblock typenn_lstm idlHKw-!F?YJ5b)it?H1Yfield nameUNITS64/fieldfield nameACTIVATIONtanh/fieldfield nameRECURRENT_ACTIVATIONsigmoid/fieldfield nameRETURN_SEQUENCESTRUE/fieldfield nameDROPOUT0/fieldfield nameRECURRENT_DROPOUT0/fieldfield nameNAMElstm_layer_1/fieldnextblock typenn_dropout idGeQGgsI{{6Vz?R[1w1Rlfield nameRATE0.2/fieldfield nameNAMEdropout_layer_1/fieldnextblock typenn_dense idFiJ)/Q}jV3?[gl:2IEfield nameUNITS64/fieldfield nameACTIVATIONrelu/fieldfield nameL2_REGULARIZATION0.0001/fieldfield nameNAMEdense_layer_1/fieldnextblock typenn_dropout id{4?_A86kipo5X(#N(xMOfield nameRATE0.2/fieldfield nameNAMEdropout_layer_1/fieldnextblock typenn_output id,x%s)bDRRh_S7y5lTm];field nameTASK_TYPEclassification/fieldfield nameREGRESSION_UNITS1/fieldfield nameREGRESSION_ACTIVATIONlinear/fieldfield nameNUM_CLASSES600/fieldfield nameCLASSIFICATION_ACTIVATIONsoftmax/fieldfield nameL2_REGULARIZATION0.0001/fieldfield nameNAMEoutput_layer_1/field/block/next/block/next/block/next/block/next/block/next/block/next/block/xml导出的未训练模型如下{ success: true, modelConfig: { className: Sequential, config: { name: nnblockly_model, layers: [ { className: InputLayer, config: { name: input_layer_1, inputShape: [ 10 ], batchInputShape: [ null, 10 ], dtype: float32, sparse: false } }, { className: Embedding, config: { name: embedding_1, trainable: true, inputDim: 600, outputDim: 64, inputLength: 10, maskZero: true, embeddingsInitializer: { className: RandomUniform, config: { minval: -0.05, maxval: 0.05, seed: null } }, embeddingsRegularizer: null }, inboundNodes: [ [ [ input_layer_1, 0, 0, [] ] ] ] }, { className: LSTM, config: { name: lstm_layer_1, trainable: true, units: 64, activation: tanh, recurrentActivation: sigmoid, returnSequences: true, dropout: 0, recurrentDropout: 0, useBias: true, unitForgetBias: true }, inboundNodes: [ [ [ embedding_1, 0, 0, [] ] ] ] }, { className: Dropout, config: { name: dropout_layer_1, trainable: true, rate: 0.2 }, inboundNodes: [ [ [ lstm_layer_1, 0, 0, [] ] ] ] }, { className: Dense, config: { name: dense_layer_1, trainable: true, units: 64, activation: relu, useBias: true, kernelInitializer: { className: GlorotUniform, config: { seed: null } }, biasInitializer: { className: Zeros, config: [] }, kernelRegularizer: { className: L1L2, config: { l2: 0.0001 } }, biasRegularizer: null, activityRegularizer: null }, inboundNodes: [ [ [ dropout_layer_1, 0, 0, [] ] ] ] }, { className: Dropout, config: { name: dropout_layer_1_1, trainable: true, rate: 0.2 }, inboundNodes: [ [ [ dense_layer_1, 0, 0, [] ] ] ] }, { className: Dense, config: { name: output_layer_1, trainable: true, units: 600, activation: softmax, useBias: true, kernelInitializer: { className: GlorotUniform, config: { seed: null } }, biasInitializer: { className: Zeros, config: [] }, kernelRegularizer: { className: L1L2, config: { l2: 0.0001 } }, biasRegularizer: null, activityRegularizer: null }, inboundNodes: [ [ [ dropout_layer_1_1, 0, 0, [] ] ] ] } ] }, keras_version: tfjs-layers 3.21.0, backend: tensorflow, labelConfig: null, hasLabelInput: false }, metadata: { type: single_output, inputShape: [ null, 10 ], outputShape: [ null, 600 ], layerCount: 7, projectId: 33, exportedAt: 2026-07-17T01:21:29.852Z, blockCount: 7, taskId: null, duration: null }, originalXml: xml xmlns\https://developers.google.com/blockly/xml\block type\nn_input\ id\*dZ,qfrpS3!DeFPI6fW\ x\56\ y\44\field name\SHAPE\(None, 10)/fieldfield name\NAME\input_layer_1/fieldnextblock type\nn_embedding\ id\lQ,]5aDne8o9(.9cE\field name\INPUT_DIM\600/fieldfield name\OUTPUT_DIM\64/fieldfield name\INPUT_LENGTH\10/fieldfield name\MASK_ZERO\TRUE/fieldfield name\NAME\embedding_1/fieldnextblock type\nn_lstm\ id\lHKw-!F?YJ5b)it?H1Y\field name\UNITS\64/fieldfield name\ACTIVATION\tanh/fieldfield name\RECURRENT_ACTIVATION\sigmoid/fieldfield name\RETURN_SEQUENCES\TRUE/fieldfield name\DROPOUT\0/fieldfield name\RECURRENT_DROPOUT\0/fieldfield name\NAME\lstm_layer_1/fieldnextblock type\nn_dropout\ id\GeQGgsI{{6Vz?R[1w1Rl\field name\RATE\0.2/fieldfield name\NAME\dropout_layer_1/fieldnextblock type\nn_dense\ id\FiJ)/Q}jV3?[gl:2IE\field name\UNITS\64/fieldfield name\ACTIVATION\relu/fieldfield name\L2_REGULARIZATION\0.0001/fieldfield name\NAME\dense_layer_1/fieldnextblock type\nn_dropout\ id\{4?_A86kipo5X(#N(xMO\field name\RATE\0.2/fieldfield name\NAME\dropout_layer_1/fieldnextblock type\nn_output\ id\,x%s)bDRRh_S7y5lTm];\field name\TASK_TYPE\classification/fieldfield name\REGRESSION_UNITS\1/fieldfield name\REGRESSION_ACTIVATION\linear/fieldfield name\NUM_CLASSES\600/fieldfield name\CLASSIFICATION_ACTIVATION\softmax/fieldfield name\L2_REGULARIZATION\0.0001/fieldfield name\NAME\output_layer_1/field/block/next/block/next/block/next/block/next/block/next/block/next/block/xml }二、数据清洗数据集使用和上一篇一样的数据集但是我们不进一步处理这些数据的格式——直接使用每行一个人名的原始数据我们使用和上一篇一样的模型词汇表600盖了近90%的数据600中有几个作特殊标记剩余的均为字符训练器会自动处理这些细节。三、训练导入模型、训练数据保持默认参数包括分词器而后不勾选“序列补全模式”点击“开始训练”即可非序列补全模式会使用滑动窗口来处理数据数据数据会被处理成若干对数据。从上图可以看到训练时间变长原因在于训练数据变多了训练几轮当模学习进入平台期即可停止训练并导出已训练模型。四、预测将已训练模型导入到预测器输入一个姓而后点击“生成文本”多次点击可以生成多个名字尝试调节控制参数可以使得模型生成产生变化对比输入数据可以看到模型学会了生成名字输入一个姓它会生成名并且不仅限于训练数据中该姓对应的名。但如果训练轮次较少模型欠拟合过多有时生成的名字会不尽人意。这也证实了使用序列补全模式更好训练——模型能够学会等号这个分隔符的意义从而更快的收敛。在浏览器内使用本地算力甚至核显就能训练文本生成模型涉及到AiEduLab.tech——AI创想实验室的大量核心技术暂无公开计划。所以在演示服务器上不提供该任务类型的训练我们计划免费无任何包括后续使用在内的费用为若干试点中小学搭建局域网服务器如果您需要加入试点计划可以直接联系我们咨询具体事项。在AI创想实验室中我们无需编程基础不用学习框架不用配置环境无需购买费用高昂的显卡更不用为云端算力付费使用当前已有的各种硬件仅有核显的个人、办公、机房电脑希沃白板等都能达到理想的教学效果。操作简单但AI核心知识样样俱全无需师资培训就可以进行教学且能取得理想的教学效果。如果加入试点或合作方那么只需要一台局域网服务器无需显卡、服务器不用供算力即可一次投入永久使用全部项目和功能通过后台管理一分钟即可创建一个本地化、校本化的项目实例。演示版本地址www.AiEduLab.tech有任何问题欢迎留言或发送邮件至helloAiEduLab.tech