KEIL调试中CMSIS-DAP连接模式选择对程序烧录的影响与实战解决
2026/4/18 4:10:44
""" 案例:基于传入的数值(每批次的歌词条数),创建生成器,生成批次歌词. (很多模型都是一个批次一个批次的给模型喂数据,来训练模型的。 构建数据生成器每8个条数据(8个样本)8个数据的给模型喂数据;) """# 需求:基于文件中的歌词,创建生成器,根据传入的每批次的歌词条数,生成歌词批次。importmath# 1.定义函数,接收每批次的歌词条数,返回生成器.defdataset_loader(batch_size):""" #自定义歌词批量生成器 :param batch_size: 每批次的歌词条数 :return: 生成器,母个元素都是一批次的数据,例如:(8条,8条,8条...) """# 1.1 读取文件数据withopen('./data/data.txt','r',encoding='utf-8')assrc_file:# 1.2 一次读取所有行# lines=[line.strip() for line in src_file.readlines()]lines=src_file.readlines()print(lines)# 1.3 计算批次总数total_batch=math.ceil(len(lines)/batch_size)# 1.4 通过for循环方式,获取到每批次的数据,放到生成器中并返回foridxinrange(total_batch):#假设5批:idx的值:0 1 2 3 4# 第1批歌词,索引(idx=0),歌词为:第1条-第8条,索引为:0-7# yield lines[0:8] #包左不包右# 第2批歌词,索引(idx=1),歌词为:第9条-第16条,索引为:8-15# yield lines[8:16]# 第3批歌词,索引(idx=2),歌词为:第17条-第24条,索引为:16-23# yield lines[16:24]yieldlines[idx*batch_size:(idx+1)*batch_size]# 2.测试dline=dataset_loader(8)# print(next(dline)) # 第一批# print(next(dline)) # 第二批forbatch_dataindline:print(batch_data)