针对Github上的一段代码的实验记录:

https://github.com/Nana0606/lyrics_generation

原作者使用说明:

设计方案实现步骤:

Step1: 读取训练文件,并分词。

Step2: 将分词结果和下标对应,得到char-to-index、index-to-char(或者phrase-to-index、word-to-index)用于后续索引

Step3: 生成训练数据和验证数据用于后续训练和验证。Step4: 模型构建、训练和保存

Step5: 调参

Step6: 数据accuracy分析

Step7: 歌词生成,加载已训练模型生成数据。

二、使用说明( https://github.com/Nana0606/lyrics_generation )

1、训练数据

# lstm模型训练

> cd lstm_model

> python train_lstm_word_based.py

# seq2seq模型训练

> cd seq2seq_model

> python train_seq2seq_word_based.py

2、生成歌词

# 将训练好的参数或者百度云盘上下载的文件放入相应文件夹下

# lstm模型生成歌词

> cd lstm_model

> python generate_lyrics_word_based.py

# seq2seq模型生成歌词

> cd seq2seq_model

> python generation_word_based.py

个人亲测生成:

1,将作者训练好的参数模型对应拷贝到承载模型py程序的文件夹中(lstm_model/generate_lyrics_word_based.py文件所在的文件夹)。拷贝后的两个文件夹文件应该多了以下几个文件:

index_to_word seq2seq_input.txt

index_to_word seq2seq_target.txt

model_seq2seq_100epoch_based.py

word_to_index_seq2seq_input.txt

word_to_index_seq2seq_target.txt

2,以lstm模型生成歌词为例,在lstm_model文件夹中打开powershell,然后输入“python train_lstm_word_based.py

”(如没安装keras会提示,此时百度后安上即可,不显示keras错误)

【注意要用管理员权限打开Anaconda prompt或者 powershell,要不然会提示没写的权限。】

3,有提示“ModuleNotFoundError: No module named ‘tensorflow‘”,

但,实际用 import tensorflow as tf 和 tf.__version__也有正确显示tf版本号。

于是,换方法,用pycharm直接打开,运行。显示ModuleNotFoundError: No module named ‘tensorflow‘。确定是配置问题。将pycharm解释器改成TensorFlow,部分解决这个问题。

——》新问题: 没有tensorflow.python.trackable模块。在百度搜索,出的损招重新安装,后来发现不对。又去google搜索,首页第一个给出答案是“这个错误是由pip install -r requirements.txt以最近发布的Keras 2.10版本为例,该版本可能假定它运行在TensorFlow 2.10旁边,并且轻微的不匹配导致了此导入错误。“【google查代码错+华为网页翻译==NB】

解决方案:有很多解决方案,最后一行最小化工作量尝试是:在2.9.0版本中安装keras所以在Anaconda prompt中输入pip install keras==2.9.0。

3,回到pycharm,打开了generate_lyrics_word_based.py ,点运行此文件,右图泪奔了。虽有报错,但歌词生成了。

lstm_model,三次有三个结果,每个不一样

seq2seq_model,两次两个结果,每个不一样

但两个结果都比较拉垮,没法看。

个人亲测训练

1,点击train_lstm_word_based.py运行后报错:

ModuleNotFoundError: No module named 'sklearn’

——》解决方法:conda install scikit-learn,然后报错.

——》解决方案:在pycharm中安装scikit-learn模块,然后又报错,如图1。[这个问题,先放着不解决]

2,由于代码是用tensorflow v1.0写的。有tensorflow V1.0和V2.0不兼容问题。如图2遇到的问题。

——》解决方案:把如下语句划线部分摘除from keras.backend.tensorflow_backend import set_session

把如下语句加上划线部分

Config=tf.compat.v1.Configproto()

Tf.compat.v1.Session()

3,报错“ No module named 'matplotlib”

——》查找:在prompt中测试matplotlib,是正常能发现的【如图3】,但是在pycharm的解释器TensorFlow中没有发现该package。说明该包没有被安装到tensorflow环境中。

——》解决方案:在prompt中切换环境到tensorflow,再“conda install matplotlib”安装。虽然有报错,但该训练模型真run起来了。如右下图所示:

CPU满跑,但计算器不卡,内存也还好,占用了4.8G内存。

在训练过程中,在训练文件夹中生成了Tensorboard文件夹。可以利用tensorflow自带的工具去打开。

启动TensorBoardTensorBoard不需要额外安装,在TensorFlow安装时已自动完成,在Anaconda Prompt中先进入日志存放的目录(注:非常重要),再运行TensorBoard,并将日志的地址指向程序日志输出的地址。命令:tensorboard --logdir=/path/log (/path/log为产生日志文件的目录)启动服务的端口默认为6006;使用 --port 参数可以改编启动服务的端口。TensorBoard是一个在本地启动的服务,启动完成后在浏览器网址:http://localhost:6006即可进行访问。

在浏览器中打开tensorboard,除了不能代替中途保存epoch训练文件,都可以分析诸如loss、Aaccuragy随着训练进程的变化数据。

注意:

seq2seq的训练相较于LSTM:

1,内存开销,这个极大,开始运行不起来,提示内存满了。后来电脑重开机,并且启用系统虚拟内存。物理内存还是接近满跑状况。

2,50次训练,总共耗时9小时。最后也得到了一堆不知道什么的东西。句式长度随机、意思随机、连韵脚也随机。

Tensorflow某段程序复现相关推荐

  1. 基于Tensorflow 2.x手动复现BERT

    基于Tensorflow 2.x手动复现BERT What's I can't create, I don't understand. -- Richard Feynman 这次来造一个NLP领域的大 ...

  2. c++读取声音文件之后回音_一段程序运行之后,输出的内容就是这段程序本身。...

    在通过了Adalab的入学赛选挑战者赛之后,Adalab联合创始人 @小熊 给我出了一道加式题: 用你最擅长的语言写一段程序,这段程序运行之后,输出的内容就是这段程序本身. 第一眼看到这个题目, 我就 ...

  3. python程序如何循环_在Python的一段程序中如何使用多次事件循环详解

    背景 本文主要给大家介绍了关于在Python一段程序中使用多次事件循环的相关内容,我们在Python异步程序编写中经常要用到如下的结构 import asyncio async def doAsync ...

  4. 接口超时后程序还会继续执行嘛_答网友问:分析一段STL程序,并就如何读懂一段程序谈几点感想...

    在文章<S7-300/400进阶笔记5.1:300系列PLC的装载存储器的类别及方法>一文后,有小伙伴在评论区提了个问题,驼子决定有必要写一篇文章,和大家一起讨论一下.也希望小伙伴们能向& ...

  5. 分别统计出其中英文字母、空格、数字和其它字符的个数 matlab 程序,编写一段程序,要求先输入一行字符,然后分别统计出其中英文...

    编写一个求和的程序,要求能任意输入两个整数,求和 用javascript写 +=functionadd(){varA=document.getElementById("a").va ...

  6. matlab的exec程序,C++调用Matlab画图的一段程序

    劳动节闲来无事,写了一天程序,just for fun. 看,这是C++调用Matlab画图的一段程序.暂时不想多解释了,有兴趣的话,看看下面的代码吧. 以下几段代码由上到下,越来越旧.最上面的是最新 ...

  7. ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序

    js定时器怎么写?就是在特定时间执行某段程序 复制代码 代码如下: $(function(){ var handler = function(){ } var timer = setInterval( ...

  8. attiny13a程序实例_关于ATtiny13A的一段程序

    关于ATtiny13A的一段程序 [复制链接] 可调光手电筒电路及程序如下: ourdev_427556[1].jpg (36.4 KB, 下载次数: 0) 2011-12-16 11:01 上传 # ...

  9. python怎么背景实现循环_在Python的一段程序中如何使用多次事件循环详解

    背景 本文主要给大家介绍了关于在Python一段程序中使用多次事件循环的相关内容,我们在Python异步程序编写中经常要用到如下的结构 import asyncio async def doAsync ...

最新文章

  1. ASP.NET WebAPi之断点续传下载(下)
  2. 计算机右键功能总结,计算机基础知识:右键快捷菜单功能介绍
  3. 关于CSS属性display:none和visible:hidden的区别
  4. 稳定匹配算法python实现
  5. 如何 ssh 到内网服务器?
  6. antd table设置表格一个单元格的字体颜色_开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件
  7. 45 MM配置-采购-条件-定价过程-定义定价计算方案
  8. 网站漏洞渗透检测过程与修复方案
  9. docker安装redis提示没有日记写入权限_Docker 从入门到掉坑
  10. php制作入库单,教你如何利用vba制作自动登记数据的仓库入库单
  11. VTN联合GWI共同启动“全球健康登月计划”让更多人享受到健康新生活
  12. C语言2009选择题答案,全国2009年10月自学考试C加加程序设计试题
  13. 2018年全国高中数学联合竞赛一试和加试参考答案(B卷)
  14. python高频词汇表大全_我们用程序整理出了一份Python英语高频词汇表,拿走不谢!...
  15. 趣味小游戏——扫雷(优化版)
  16. 甲骨文CEO独家揭秘企业转型秘诀,就一个字
  17. 生产计划管理软件有哪些?哪个好
  18. 作文提升~老师整理的优美比喻句太实用
  19. 光伏产业红与黑 需求寒冬背后暗藏分布式春天
  20. 一文带你看懂JAVA IO流(一),史上最全面的IO教学啦(附送JAVA IO脑图)

热门文章

  1. 【Android】RecyclerView的好伴侣:详解DiffUtil
  2. 锂离子电池性能测试软件,锂离子电池最常用的性能测试-放电曲线分析攻略(8000字长文)...
  3. 什么是运维?运维开发需要做哪些事情?
  4. 国开1253c语言程序设计,人教版三年级数学下册单元测试题全套
  5. 三种快排及四种优化方式
  6. 用java实现四色定理
  7. 杭州软件测试人员工资水平,杭州软件测试工资待遇如何?
  8. 软件测试工资一般是多少?
  9. 决策树之C4.5实现(离散属性与连续,属性并存)
  10. 望京,承包了帝都码农圈的魔幻