点击上方码农的后花园”,选择星标” 公众号

精选文章,第一时间送达

很久以来,我们都想让机器自己创作诗歌,当无数作家、编辑还没有抬起笔时,AI已经完成了数千篇文章。现在,这里是第一步....

这诗做的很有感觉啊,这都是勤奋的结果啊,基本上学习了全唐诗的所有精华才有了这么牛逼的能力,这一般人能做到?

甚至还可以模仿周杰伦创作歌词 !!怎么说,目前由于缺乏训练文本,导致我们的AI做的歌词有点....额,还好啦,有那么一点忧郁之风。

1.下载代码和数据集

Github地址: https://github.com/jinfagang/tensorflow_poems

数据集: 存放于项目的data文件夹内

2.环境导入

import os
import tensorflow as tf
from poems.model import rnn_model
from poems.poems import process_poems, generate_batch
import argparse
from pathlib import Path

3.参数设置

parser = argparse.ArgumentParser()
#type是要传入的参数的数据类型  help是该参数的提示信息
parser.add_argument('--batch_size', type=int, help='batch_size',default=64)
parser.add_argument('--learning_rate', type=float, help='learning_rate',default=0.0001)
parser.add_argument('--model_dir', type=Path, help='model save path.',default='./model')
parser.add_argument('--file_path', type=Path, help='file name of poems.',default='./data/poems.txt')
parser.add_argument('--model_prefix', type=str, help='model save prefix.',default='poems')
parser.add_argument('--epochs', type=int, help='train how many epochs.',default=126)args = parser.parse_args(args=[])

4.训练

下载的代码中的./model/中包含最新的训练模型,再次训练会接着训练。如果训练路径报错,需要删除./model的模型,重新开始训练。

def run_training():if not os.path.exists(args.model_dir):os.makedirs(args.model_dir)poems_vector, word_to_int, vocabularies = process_poems(args.file_path)batches_inputs, batches_outputs = generate_batch(args.batch_size, poems_vector, word_to_int)input_data = tf.placeholder(tf.int32, [args.batch_size, None])output_targets = tf.placeholder(tf.int32, [args.batch_size, None])end_points = rnn_model(model='lstm', input_data=input_data, output_data=output_targets, vocab_size=len(vocabularies), rnn_size=128, num_layers=2, batch_size=64, learning_rate=args.learning_rate)saver = tf.train.Saver(tf.global_variables())init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())with tf.Session() as sess:# sess = tf_debug.LocalCLIDebugWrapperSession(sess=sess)# sess.add_tensor_filter("has_inf_or_nan", tf_debug.has_inf_or_nan)sess.run(init_op)start_epoch = 0checkpoint = tf.train.latest_checkpoint(args.model_dir)if checkpoint:saver.restore(sess, checkpoint)print("## restore from the checkpoint {0}".format(checkpoint))start_epoch += int(checkpoint.split('-')[-1])print('## start training...')try:n_chunk = len(poems_vector) // args.batch_sizefor epoch in range(start_epoch, args.epochs):n = 0for batch in range(n_chunk):loss, _, _ = sess.run([end_points['total_loss'],end_points['last_state'],end_points['train_op']], feed_dict={input_data: batches_inputs[n], output_targets: batches_outputs[n]})n += 1print('Epoch: %d, batch: %d, training loss: %.6f' % (epoch, batch, loss))#if epoch % 5 == 0:saver.save(sess, os.path.join(args.model_dir, args.model_prefix), global_step=epoch)except KeyboardInterrupt:print('## Interrupt manually, try saving checkpoint for now...')saver.save(sess, os.path.join(args.model_dir, args.model_prefix), global_step=epoch)print('## Last epoch were saved, next time will start from epoch {}.'.format(epoch))run_training()

5.诗词生成

import tensorflow as tf
from poems.model import rnn_model
from poems.poems import process_poems
import numpy as npstart_token = 'B'
end_token = 'E'
model_dir = './model/'
corpus_file = './data/poems.txt'lr = 0.0002def to_word(predict, vocabs):predict = predict[0]       predict /= np.sum(predict)sample = np.random.choice(np.arange(len(predict)), p=predict)if sample > len(vocabs):return vocabs[-1]else:return vocabs[sample]def gen_poem(begin_word):batch_size = 1print('## loading corpus from %s' % model_dir)tf.reset_default_graph()poems_vector, word_int_map, vocabularies = process_poems(corpus_file)input_data = tf.placeholder(tf.int32, [batch_size, None])end_points = rnn_model(model='lstm', input_data=input_data, output_data=None, vocab_size=len(vocabularies), rnn_size=128, num_layers=2, batch_size=64, learning_rate=lr)saver = tf.train.Saver(tf.global_variables())init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())with tf.Session() as sess:sess.run(init_op)checkpoint = tf.train.latest_checkpoint(model_dir)saver.restore(sess, checkpoint)x = np.array([list(map(word_int_map.get, start_token))])[predict, last_state] = sess.run([end_points['prediction'], end_points['last_state']],feed_dict={input_data: x})word = begin_word or to_word(predict, vocabularies)poem_ = ''i = 0while word != end_token:poem_ += wordi += 1if i > 24:breakx = np.array([[word_int_map[word]]])[predict, last_state] = sess.run([end_points['prediction'], end_points['last_state']],feed_dict={input_data: x, end_points['initial_state']: last_state})word = to_word(predict, vocabularies)return poem_def pretty_print_poem(poem_):poem_sentences = poem_.split('。')for s in poem_sentences:if s != '' and len(s) > 10:print(s + '。')

6.测试运行

7. 运行环境

本次使用框架TensorFlow1.13.1,本项目可以在华为提供的JupyterLab环境中运行。参考华为的实践案例:《AI作诗》:http://su.modelarts.club/dqTT https://developer.huaweicloud.com/signup/e4240e984d1c4d20bfcc83e7f7648b6c?

后台回复关键字:项目实战,可下载完整代码。

·················END·················

AI作诗,模仿周杰伦创作歌词-实战项目相关推荐

  1. 【FFH】AI作诗之httpRequest实战

    [FFH]AI作诗之httpRequest实战 前言 Demo展示 http接口常识补充 内容类型(Content-Type) 响应状态码(ResponseCode) 代码实现 ①申请网络权限 ② 导 ...

  2. 【AI作诗】主流平台介绍+自主搭建

    诗歌总是属于文人的浪漫,但随着技术的发展,理科生文艺起来,也就没文科生什么事了(开玩笑的).通过本篇文章,笔者将给大家介绍主流的AI诗歌创作平台及如何自己搭建,以供大家学习参考. 技术的进步是为了更好 ...

  3. AI作诗:诗三百·人工智能诗歌写作平台

    挺有意思的一个AI作诗网站,之前也用过几个作诗网站,但是感觉这个作出来的更有内味. 对于已经有人生成过的词句,结果返回的很快,对于生词,可能需要多等一会. 刚开始测试的时候还挺快,现在生成的有点慢了, ...

  4. AI作诗:深度学习应用演示平台

    挺有意思的一个AI作诗网站,之前也用过几个作诗网站,但是感觉这个作出来的更有内味. 对于已经有人生成过的词句,结果返回的很快,对于生词,可能需要多等一会. 刚开始测试的时候还挺快,现在生成的有点慢了, ...

  5. 不一样的七夕礼:最美情话+AI 作诗

    作者 | 月小水长 来源 | 月小水长(ID:inspurer) 七夕到了,程序猿同志们都在想怎么送女朋友礼物,送包包?太俗气!送口红?没有新意! 没有点子的同志们不妨看看这篇,满满的干货:LDA 主 ...

  6. python智能写诗的程序,Tensorflow Series 1: 使用LSTM实现古诗人工智能作诗

    时隔多年终于实现了这个牛逼的作诗机器人.大家可以看看效果图感受一下 本文由清华大学较为牛逼的研究生金天同学原创,欢迎转载,但是请保留这段版权信息,如果你对文章有任何疑问,欢迎微信联系我:jintian ...

  7. 腾讯国风AI虚拟人学会作诗书法,背靠开源模型SongNet

    5月21日,腾讯AI虚拟人艾灵再秀出新技能,首次展示AI作诗.AI书法等国风才艺,并与青年歌手白举纲跨次元合作,共同演唱国风新歌<百川千仞>. AI"艾灵"诞生于腾讯A ...

  8. 从唱歌到作诗书法,腾讯AI Lab虚拟人艾灵技能再进化

    转载自:腾讯AI实验室 5月21日,腾讯 AI Lab 虚拟人艾灵再秀出新技能,首次展示AI作诗.AI书法等国风才艺,并与青年歌手白举纲跨次元合作,共同演唱国风新歌<百川千仞>. AI&q ...

  9. 【干货贴】当人工智能与艺术碰撞 | AI写诗

    生成式人工智能产品(AIGC) ​前几天,扎克伯格称:Meta 将组建顶级 AI 团队,专注生成式人工智能产品,在短期内,公司将专注于构建创造性和表现力的工具. 说到富有创造力和表现力的艺术行为,首先 ...

最新文章

  1. 2019.3.18 异常处理和日志相关
  2. platform设备驱动全透析
  3. 文巾解题 810. 黑板异或游戏
  4. c语言程序中cost的作用,C语言考试题基础版(21页)-原创力文档
  5. IDA Plugin 编写基础
  6. ES6之const命令
  7. Dirichlet Multinomial Mixture Model做短文本聚类
  8. Anaconda各版本安装包存档
  9. js layui跳转页面_【WEB前端开辟】layui的iframe跳转链接与页面按钮跳转相干引见...
  10. Python自动对Word文件中Python程序进行着色
  11. android view设置按钮颜色_Android 酷炫自定义 View:高仿 QQ 窗帘菜单
  12. curl and wget
  13. php通过mysqli链接mysql数据库
  14. Linux input输入子系统demo驱动
  15. 为计算机构建安全方案,计算机科学系安全管理标准化建设实施方案
  16. 利用EnableQ在线问卷调查引擎服务学校评教评学工作
  17. WORD2016打印文档时,图片打印不正常的解决方法
  18. Android音频压缩分析
  19. 用计算机画画的图片,儿童电脑画画大全图片
  20. 精力充沛是一种自我管理能力

热门文章

  1. nodejs 运行CMD命令
  2. 通过循环按行顺序为一个 5×5 的二维数组 a 赋 1 到 25 的自 然数,然后输出该数组的左下半三角
  3. Win10深度学习框架及GPU运算环境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow 1.14.0)
  4. 微服务与分布式产生的背景和区别
  5. Flash芯片的通信协议,分类和特点
  6. mysql外码是什么意思_数据库中的外键是什么意思?
  7. ITC国际资格认证项目简介
  8. 树莓派 PHP白屏,树莓派3.5英寸屏幕安装显示驱动,解决白屏问题
  9. 膜拜大佬!mysql数据库基础教程课后答案
  10. c++某种文件格式的读取与写入范例[stl]