作词家下岗系列:教你用RNN算法做一个写词软件imagernn调用优化器

自然语言处理作为人工智能的一个重要分支,在我们的生活中得到了广泛应用。其中RNN算法作为自然语言处理的经典算法之一,是文本生成的重要手段。而今天我们就将利用RNN算法建立一个写歌词的软件。其中的界面如下:

RNN指的是循环神经网络,RecurrentNeuralNetwork。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。

RNN模型有比较多的变种,这里介绍最主流的RNN模型结构如下:

这幅图描述了在序列索引号tt附近RNN的模型。其中:

基于以上认知,我们开始搭建我们的软件。

实验前的准备

首先我们使用的python版本是3.6.5所用到的库有TensorFlow,是用来训练和加载神经网络常见的框架,常常用于数值计算的开源软件库。节点表示数学操作,线则表示在节点间相互联系的多维数据数组,即张量(tensor);tkinter用来绘制GUI界面的库;

Pillow库在此项目中用来处理图片和字体等问题。因为我们的软件不是空白背景的。需要借助Image函数添加背景。

RNN算法搭建

1、数据集处理和准备:

我们训练的数据集使用各种歌手的歌词本作为训练集。其中数据集放在date.txt里,其中部分数据集如下:

2、模型的训练:

模型训练的代码直接运行train.py即可训练。其中流程如下:

其中代码如下:

deftrain():filename='date.txt'withopen(filename,'r',encoding='utf-8')asf:text=f.read()reader=TxtReader(text=text,maxVocab=3500)reader.save('voc.data')array=reader.text2array(text)generator=GetBatch(array,n_seqs=100,n_steps=100)model=CharRNN(numClasses=reader.vocabLen,mode='train',numSeqs=100,numSteps=100,lstmSize=128,numLayers=2,lr=0.001,Trainprob=0.5,useEmbedding=True,numEmbedding=128)model.train(generator,logStep=10,saveStep=1000,maxStep=100000)

3、RNN网络搭建:

RNN算法的搭建,我们定义整个神经网络类,然后分别定义初始化、输入、神经元定义等函数。损失函数和优化器使用均方差和AdamOptimizer优化器即可。

部分代码如下:

4、歌词的生成:

设置关键词变量,读取模型文件,输出结果即可。

代码如下:

defmain(_):reader=TxtReader(filename='voc.data')model=CharRNN(numClasses=reader.vocabLen,mode='test',lstmSize=128,numLayers=2,useEmbedding=True,numEmbedding=128)checkpoint=tf.train.latest_checkpoint('./models/')model.load(checkpoint)key="雪花"prime=reader.text2array(key)array=model.test(prime,size=reader.vocabLen,n_samples=300)print("《"+key+"》")print(reader.array2text(array))

界面的定义和调用

界面中我们的布局是文本框、编辑框和按钮控件。程序的调用使用批处理文件调用以达到显示运行过程的效果。因为如果没有运行过程,难免会导致用户不清楚程序流程而强制运行容易导致卡死的情况。

其中Bat里直接写入:

pythonsong.py

其中过程效果如下:

1、界面布局:

界面布局使用canvas画布以达到添加背景图片的效果。背景图片设置为1.jpg,按钮背景图片设置为3.jpg。图片也可以自己更换掉。然后文本框作为提示的效果,分别定义字体,大小等等即可

root=tk.Tk()root.title('AI写歌词')#背景canvas=tk.Canvas(root,width=800,height=500,bd=0,highlightthickness=0)imgpath='1.jpg'img=Image.open(imgpath)photo=ImageTk.PhotoImage(img)

imgpath2='3.jpg'img2=Image.open(imgpath2)photo2=ImageTk.PhotoImage(img2)canvas.create_image(700,400,image=photo)canvas.pack()label=tk.Label(text="请输入关键词:",font=("微软雅黑",20))entry=tk.Entry(root,insertbackground='blue',highlightthickness=2,font=("微软雅黑",15))entry.pack()entry1=tk.Text(height=15,width=115)entry1.pack()

2、功能调用:

我们使用按钮中的command参数调用已设置好的函数即可。其中函数部分我们通过生成文本和删除文本的方式读入数据和写入数据。为了防止数据重叠故在要时刻监测重复软件。定义的函数内容如下:

defsong():ss=entry.get()f=open("1.txt","w")f.write(ss)f.close()os.startfile("1.bat")whileTrue:ifos.path.exists("2.txt"):f=open("2.txt")ws=f.read()f.close()entry1.insert("0.0",ws)breaktry:os.remove("1.txt")os.remove("2.txt")except:pass

3、GUI代码:

整个GUI界面代码如下:

importtkinterastkfromPILimportImageTk,Imageimportostry:os.remove("1.txt")os.remove("2.txt")except:passimportosdefsong():ss=entry.get()f=open("1.txt","w")f.write(ss)f.close()os.startfile("1.bat")whileTrue:ifos.path.exists("2.txt"):f=open("2.txt")ws=f.read()f.close()entry1.insert("0.0",ws)breaktry:os.remove("1.txt")os.remove("2.txt")except:passroot=tk.Tk()root.title('AI写歌词')#背景canvas=tk.Canvas(root,width=800,height=500,bd=0,highlightthickness=0)imgpath='1.jpg'img=Image.open(imgpath)photo=ImageTk.PhotoImage(img)

imgpath2='3.jpg'img2=Image.open(imgpath2)photo2=ImageTk.PhotoImage(img2)canvas.create_image(700,400,image=photo)canvas.pack()label=tk.Label(text="请输入关键词:",font=("微软雅黑",20))entry=tk.Entry(root,insertbackground='blue',highlightthickness=2,font=("微软雅黑",15))entry.pack()entry1=tk.Text(height=15,width=115)entry1.pack()bnt=tk.Button(width=15,height=2,image=photo2,command=song)canvas.create_window(100,50,width=200,height=30,window=label)canvas.create_window(500,50,width=630,height=30,window=entry)canvas.create_window(400,100,width=220,height=50,window=bnt)canvas.create_window(400,335,width=600,height=400,window=entry1)root.mainloop()

到这里,我们整体的程序就搭建完成,下面为我们程序的运行过程和结果:

源码地址:

提取码:iz5m

作者简介:李秋键,CSDN博客专家,CSDN达人课作者。硕士在读于中国矿业大学,开发有taptap安卓武侠游戏一部,vip视频解析,文意转换工具,写作机器人等项目,发表论文若干,多次高数竞赛获奖等等。

THE END
1.2024年推荐算法效率开发必备工具榜单算法软件算法软件有哪些WakaTime 是一款轻量级工作统计软件,其通过插件配置的方式内嵌到开发常用的办公开发软件中,在无感知的情况下统计相关工作时间,推荐算法场景下,常用的 Pycharm、Idea、CLion、VS Code、Word、Excel、PowePoint、iterm2、Sublime Text 等均适配 WakaTime。每天各个项目的开发时长、每天浏览网页与编码时间的对比、每日代码语言https://blog.csdn.net/2401_87225440/article/details/142346207
2.算法分析与设计用什么软件mb60179b8f89f61的技术博客在软件工程中,算法分析与设计是至关重要的一环,它直接关乎到软件系统的性能和效率。而在算法分析与设计的过程中,选择合适的软件工具能够事半功倍,提升开发效率。那么,在进行算法分析与设计时,我们应该使用哪些软件呢? 首先,我们得明确一点,算法分析与设计所涉及的软件工具并非单一,而是多元化的,包括但不限于代码编辑https://blog.51cto.com/u_15099695/10925938
3.软件算法工程师是做什么的软件算法工程师就业前景猎聘为您提供软件算法工程师岗位职责, 软件算法工程师就业前景,软件算法工程师薪资待遇,软件算法工程师简历模板,软件算法工程师招聘信息等内容,为您选择软件算法工程师工作提供有价值的参考。https://www.liepin.com/jobsruanjiansfgcs/
4.我院刘新为教授应邀在全国算法软件与应用学术年会做大会报告2024年6月8日—10日,中国运筹学会算法软件与应用分会第二届学术年会(ASA2024)在河南新乡举行。来自全国28个省市自治区的109所高校、8个科研机构与3个企业的400余名代表参加会议。河北工业大学教授刘新为、徐梦薇,副教授高雪等,以及来自河北高校的多位博士和硕士研究生代表参会并作学术报告。河北工业大学教授黄亚魁组织https://xww.hebut.edu.cn/zhxw/cd1528e58eac40e0a8eedc871ded2822.htm
5.最全的AI编程工具大盘点(持续更新)现在通过我的链接注册,立得90天专业版体验卡,来吧,让我们一起释放“十倍”软件生产力! comate.baidu.com/zh/vip 06-28· 北京 ?回复?喜欢 推荐阅读 AI写程序,这事可没那么简单! 去年年初,微软公司推出了一款名为 DeepCoder的机器学习系统,同时宣称该系统具有自我编码的能力,这一举动又将人工智能的发展https://zhuanlan.zhihu.com/p/679916204
6.EASE软件介绍AURA是与亚琛工业大学共同合作开发的高效算法软件,可以大大减少声反射的计算时间,同时提高精度。 AURA的算法中综合了扩散反射法和声线法,提高了计算精度,丰富了模型细节。即使在处理较为复杂的房间模型和音响系统时,如线阵列音响等,都可以确保最准确的仿真结果。AURA能够计算出更详尽的脉冲响应,使得可听化模块EARS产生更https://www.saijia.com/article-detail/BROJmwEN
7.算法工程师和软件开发工程师的区别是什么?rt,看到大家一窝蜂的往算法岗靠,为什么大家都执着于算法岗,是什么原因?算法工程师前景更好吗?算法工程师和软件开发工程师的区别是什么?怎么知道自己性格适合哪个岗位?#算法工程师##应用开发工程师##岗位评价#全部评论 推荐 最新 楼层 请叫我0offer大佬 江南大学 算法工程师 算法吃思维,虽然入门容易,但是要能https://www.nowcoder.com/discuss/330655
8.依图凭什么敢「卖房子」赌一颗AI芯?依图科技另外,我们的优势还在于对行业的理解。这个优势我觉得不仅是体现在现在。我们决定做这款芯片的时候,是非常相信垂直整合的,有对算法深度的理解,有对行业深度的理解,加上有芯片的设计能力,从垂直的场景发力会变得越来越强。 Q:依图的基因偏向算法和软件,做芯片的团队如何组建和完善? https://www.yitutech.com/cn/node/714
9.的时间序列回归预测matlab仿真简简单单做算法1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 https://www.cnblogs.com/matlabworld/p/18409264
10.MCU测量交流电方案与写法思路漫谈检波的方式分为硬件检波与软件检波,硬件检波是让原始信号通过各种线性或者非线性的模拟电路得到期望信号,缺点是电路复杂,不灵活。软件检波是即直接把被测信号送入ADC采集,单片机通过程序计算参数,优点是精度高,集成度高,电路简单可靠,功能强大,可以实现复杂算法,并且参数调整方便,因此逐渐成为主流。本文中除了必要的模拟https://oshwhub.com/article/MCUce-liang-jiao-liu-dian-fang-an-yu-sai-lu-man-tan
11.用WEKA软件进行Apriori算法数据挖掘测试最详细清楚解释九、第二步选择红色箭头指向的红色框中的“Apriori”。进行算法选择为Apriori算法,为关联规则分析做准备。 十、点击红色箭头指向的红色框中的内容。 十一(重要)、页面中的参数值(见下图红色框的内容)都可以修改调动,但建议在修改调动之前现阅读下面各个参数所表达的含义和用法,若不需要修改调动,就直接可以采用系统默https://developer.aliyun.com/article/1138545
12.画程软件使用说明.ppt画程软件使用说明 湖北省水果湖高级中学 伍先军 用计算机编程解决问题 培养什么样的人——宏观 最燃新概念: 人工智能 区块链 物联网 机器人 VR,AR,MR 3D打印 无人机 大数据 云计算 超级计算机 量子计算机 做程序猿(媛)? 干得赢人工智能! 生涯规划: 学科层面——中观 5G 高中信息技术课程模块 类别 模块设计 https://max.book118.com/html/2021/1104/6141115225004041.shtm
13.自动化软件工程师岗位职责(工作内容,是做什么的)自动化软件工程师是做什么的?有前途吗?工资待遇怎样?52.4%的岗位拿¥15-30K/月。招聘要求高吗?学历本科最多占69.5%,经验3-5年最多占38.9%。应该学什么专业?软件工程专业等。自动化软件工程师岗位职责怎么写?为你汇总天一智能,新凯来等公司的工作描述。https://www.jobui.com/gangwei/zidonghuaruanjiangongchengshi/
14.汽车行业车载智能计算平台深度研究:架构趋势格局将训练好的模型和其他的软件算法集成,在云端的仿真器平台做模拟的仿真,验证软件算 法的准确性和可靠性。 5) 实车路测。将软件算法刷写进车载计算平台,进行实际路测。在实测中发现问题,针对性的采集特定 区域的数据,再完成算法训练优化,在进行仿真和实测。 6) OTA 更新计算平台。车辆销售后,厂商根据实际道路的https://www.dongchedi.com/article/7131900552548139560