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

news2024/11/25 16:32:15

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

技术的进步是为了更好的服务原有的创作,而非取代,毕竟AI诗歌是没有灵魂的。

一、主流AI作诗平台介绍

1、诗三百·人工智能诗歌写作平台

平台支持绝句、律诗、词、对联等多种文学形式,类型比较齐全。
在这里插入图片描述

2、九歌·人工智能诗歌写作系统

平台与诗三百比较类似,由清华大学自然语言处理与社会人文计算实验室研发。

在这里插入图片描述

3、华为乐府·人工智能作诗小程序

华为乐府AI是首个基于GPT打造的作诗系统,而且与谷歌提出的BERT息息相关。华为乐府本省作诗质量较高,但需付费。

在这里插入图片描述

4、微软小冰·AI现代诗歌创作系统

平台主打现代诗歌创作,值得注意的是其声明:小冰宣布放弃她创作的诗歌版权所以你可以任意发表最终的作品甚至不必提及她参与了你的创作,即创作作品完全归你所有。该平台可以通过图片和提示词训练创作诗歌,把相机中留下的美妙瞬间变成诗也是极不错的呢。

在这里插入图片描述

二、自主搭建

这里使用的项目地址为https://github.com/lucasjinreal/tensorflow_poems,基于tensorflow开发的AI作诗项目。现在笔者就来介绍怎样自主搭建属于自己的AI作诗程序。

1、安装配置Anaconda

进入官网下载安装包并安装,然后将Anaconda配置到环境变量中。

在这里插入图片描述

克隆项目后,在项目根目录新建文件environment.yml和空文件requirements.txt,并在environment.yml中填入如下内容:

name: poemai
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
dependencies:
  - pip==21.2.4
  - python==3.10.6

打开命令行,依次通过如下命令创建Python运行虚拟环境。

conda env create
E:\workspace\02_Python\002_AI作诗>conda info --envs

# conda environments:

#
base                  *  D:\anaconda3
novelai                  D:\anaconda3\envs\novelai
poemai                   D:\anaconda3\envs\poemai


E:\workspace\02_Python\002_AI作诗>conda activate poemai

但需要注意的是,此时安装的tensorflow已经是第2版了,而项目是基于tensorflow1.10 api开发的,需修改:

import tensorflow as tf =>
import tensorflow.compat.v1 as tf

否则会出现如下错误:

(poemai) E:\workspace\02_Python\002_AI作诗>python train.py
Traceback (most recent call last):
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 24, in <module>
    tf.app.flags.DEFINE_integer('batch_size', 64, 'batch size.')
AttributeError: module 'tensorflow' has no attribute 'app'

2、模型训练及运行

环境搭建完成后,先执行python train.py命令训练模型。

模型训练完成后,执行python compose_poem.py开始诗歌创作:

在这里插入图片描述

看着像模像样,却终不能与前面提到的主流平台相论,诗的意蕴自不必说,更有时会放飞自我。

在这里插入图片描述

3、可能遇到的问题

3.1 tf.placeholder() is not compatible with eager execution

具体报错内容如下:

(poemai) E:\workspace\02_Python\002_AI作诗>python train.py
Traceback (most recent call last):
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 87, in <module>
    tf.app.run()
  File "D:\anaconda3\envs\poemai\lib\site-packages\tensorflow\python\platform\app.py", line 36, in run
    _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
  File "D:\anaconda3\envs\poemai\lib\site-packages\absl\app.py", line 308, in run
    _run_main(main, args)
  File "D:\anaconda3\envs\poemai\lib\site-packages\absl\app.py", line 254, in _run_main
    sys.exit(main(argv))
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 83, in main
    run_training()
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 42, in run_training
    input_data = tf.placeholder(tf.int32, [FLAGS.batch_size, None])
  File "D:\anaconda3\envs\poemai\lib\site-packages\tensorflow\python\ops\array_ops.py", line 3340, in placeholder
    raise RuntimeError("tf.placeholder() is not compatible with "
RuntimeError: tf.placeholder() is not compatible with eager execution.

原因分析:Tensorflow 2.0 会默认使用 Eager Execution这个功能,具体代码如下。这段代码会直接导致与tf.placeholder()这段代码冲突。

tf.compat.v1.enable_eager_execution()

解决方案:在tf.placeholder() 前面输入以下代码,使得功能先不生效。

tf.compat.v1.disable_eager_execution()

3.2 module ‘tensorflow’ has no attribute ‘contrib’

具体报错内容如下:

(poemai) E:\workspace\02_Python\002_AI作诗>python train.py
Traceback (most recent call last):
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 88, in <module>
    tf.app.run()
  File "D:\anaconda3\envs\poemai\lib\site-packages\tensorflow\python\platform\app.py", line 36, in run
    _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
  File "D:\anaconda3\envs\poemai\lib\site-packages\absl\app.py", line 308, in run
    _run_main(main, args)
  File "D:\anaconda3\envs\poemai\lib\site-packages\absl\app.py", line 254, in _run_main
    sys.exit(main(argv))
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 84, in main
    run_training()
  File "E:\workspace\02_Python\002_AI作诗\train.py", line 46, in run_training
    end_points = rnn_model(model='lstm', input_data=input_data, output_data=output_targets, vocab_size=len(
  File "E:\workspace\02_Python\002_AI作诗\poems\model.py", line 44, in rnn_model
    cell_fun = tf.contrib.rnn.BasicLSTMCell
AttributeError: module 'tensorflow' has no attribute 'contrib'

原因分析:由于tensorflow2.x废弃了很多tensorflow1.x API接口,使用tensorflow2.x版本调用tensorflow1.x函数的代码时,常常会出现module ‘tensorflow’ has no attribute ‘contrib’这样的问题。如笔者的错误,因为tensorflow2.x版本已经没有contrib库,可以尝试下面的方法解决。

首先用placeholder的方法,先修改import tensorflow as tf 改成

import tensorflow.compat.v1 as tf
tf.compat.v1.disable_eager_execution()

BasicLSTMCell处理方法,DropoutWrapperMultiRNNCell同理:

cell = tf.contrib.rnn.BasicLSTMCell(num_units=units, forget_bias=0.9)
修改为:
cell = tf.nn.rnn_cell.BasicLSTMCell(num_units=units,forget_bias=0.9)

contrib.rnn 改成 nn.rnn_cell,如果使用了static_rnn类似的,就把contrib.rnn改成nn即可。

outputs, _ = tf.contrib.rnn.static_rnn(stacked_lstm_cells, inputs, dtype=tf.float32)
修改为:
outputs, _ = tf.nn.static_rnn(stacked_lstm_cells, inputs, dtype=tf.float32)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/480461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0、Java开发常见(并发,JVM)

并发 问题详解请谈谈你对volatile的理解linkCAS你知道吗&#xff1f;link原子类Atomiclnteger的ABA问题谈谈?原子更新引用知道吗&#xff1f;link我们知道ArrayList是线程不安全&#xff0c;请编码写一个不安全的案例并给出解决方案link公平锁/非公平锁/可重入锁/递归锁/自旋…

快解析赋能企业私有云部署

很多企业形成了以总部为中心的多点生产体系结构&#xff0c;并借助网络化办公工具搭建跨区域协同办公系统&#xff0c;满足总部与分支机构间的信息互通&#xff0c;进而促进异地业务的信息共享&#xff0c;提高办公处理效率和综合管理水平。 北京某信息技术公司&#xff0c;主…

C# 使用OpenCV基本图像操作功能

C# 使用OpenCV OpenCV是一个开源的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。C#在上位机开发中比较常用&#xff0c;有些项目需要在上位机上加入一些机器视觉相关的功能&#xff0c;在下面简单介绍了C#中使用OpenCV…

JVM-0426

对象内存布局 对象的实例化 创建对象的方式&#xff1a; new 最常见的方式变形1&#xff1a;XX的静态方法 Class &#xff1a; 调用froName( )方法变形2&#xff1a;xxxBuilder / xxxFactory的静态方法 Class的newInstance( )&#xff1a;反射的方式&#xff0c;只能调用空参的…

自动控制原理笔记-频率响应法-频率特性的概念

目录 频率响应法&#xff1a; 频率特性的概念&#xff1a; 一、频率特性的定义&#xff1a; 二、频率特性的求法: 三、频率特性的物理意义: 四、频率特性的图形表示方法: 频率响应法&#xff1a; 基本思想&#xff1a;通过开环频率特性的图形对系统进行分析。 主要优点&…

【2023华中杯数学建模】B 题 小学数学应用题相似性度量及难度评估详细建模方案及实现代码

更新时间&#xff1a;2023-5-1 14:00 1 题目 B 题 小学数学应用题相似性度量及难度评估 某 MOOC 在线教育平台希望能够进行个性化教学&#xff0c;实现用户自主学习。在用户学习时&#xff0c;系统从题库中随机抽取若干道与例题同步的随堂测试题&#xff0c;记录、分析学生的学…

java的类加载浅析

类加载 类加载器 类加载器是Java虚拟机&#xff08;JVM&#xff09;的一个组成部分&#xff0c;它的主要任务是在运行时动态加载类和资源&#xff0c;以便程序能够使用它们。类加载器从文件系统、网络或其他来源中获取类的字节码&#xff0c;并将其转换为JVM可执行的形式&…

机器学习基础知识之交叉验证

文章目录 交叉验证定义1、随机子抽样验证2、K折交叉验证3、留一法交叉验证4、自助采样验证 交叉验证定义 在使用某一个数据集对模型进行训练时&#xff0c;模型的实际训练情况会受到数据集的直接影响&#xff0c;且其实际训练结果是难以确定的&#xff0c;极有可能出现欠拟合与…

【实验报告】实验四、彩色图像处理

一、实验目的 使用MatLab软件对图像进行彩色处理&#xff0c;熟悉使用MatLab软件进行图像彩 色处理的有关方法&#xff0c;并体会到图像彩色处理技术以及对图像处理的效果。 二、实验原理 &#xff08;一&#xff09;一幅RGB图像就是彩色像素的一个M x N x 3数组&#xff0…

视频搬砖项目【一个技术员是如何轻松利用视频搬运项目做到日入2000+】

无门槛人人可做副业项目&#xff0c;视频搬砖收益&#xff0c;实测一天2000&#xff01; 今天给大家分享一个微信看一看 的项目&#xff0c;操作非常简单&#xff0c;小白也很容易上手&#xff0c;不需要像某音一样去卖货&#xff0c;只要发布作品就能够有收益。 第一个、项目…

vue项目无法运行报错 error:0308010C:digital envelope routines::unsupported

文章目录 问题原因解决方法方法一方法二 问题 运行vue项目&#xff0c;报错 error:0308010C:digital envelope routines::unsupported 原因 网上查了一下&#xff0c;大体原因就是node版本不对&#xff0c;node版本太高 也有说我没有使用 Node JS 的 LTS&#xff08;长期支…

ROS2交叉编译操作

ROS2移植过程 在移植ROS2之前,先确认需要移植的版本以及其对应的依赖,这些信息可以在 ROS 2 Releases and Target Platforms 中有介绍,可依据自身需要使用的平台,参考该链接进行选择,下面以ROS2 Humble为例进行介绍ROS2移植操作。 ROS Humble依赖如下: 而ROS2的构建依赖…

sed进阶之保留空间和排除命令

shell脚本编程系列 保留空间 模式空间&#xff08;pattern space&#xff09;是一块活跃的缓冲区&#xff0c;在sed编辑器执行命令时保存着待检查的文本&#xff0c;但它并不是sed编辑器保存文本的唯一空间。sed编辑器还有另一块称作保留空间&#xff08;hold space&#xff0…

【深度学习】BERT是什么?怎么玩的?

RNN 也是一种Seq2Seq网络 这种RNN就不能并行运算&#xff0c;且对于长句子会造成损失遗忘或者梯度爆炸 Transfomer Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建&…

美国大学特别重视的批判性思维,是如何培养出来的?

美国大学非常注重培养学生的批判性思维&#xff0c;爱因斯坦有一句名言&#xff1a;“大学教育的价值&#xff0c;不在于学习很多事实&#xff0c;而在于训练大脑会思考。” 批判性思维有两个典型特征&#xff1a;&#xff08;1&#xff09;批判性思维善于对通常被接受的结论提…

SpringMVC学习总结

SpringMVC简介 我们首先要了解MVC是什么 MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xf…

oracle 19创建用户时出现“ORA-65096: invalid common user or role name”的错误

ORACLE 19命令 版本&#xff1a;Version 19.3.0.0.0 一、ORACLE 19创建用户命令 1、切换到oracle用户 [rootoracledb ~]# su - oracle Last login: Tue Jun 1 01:48:10 PDT 2021 on pts/5 2、以dba身份进入sql语句 [oracleoracledb ~]$ sqlplus "/as sysdba" …

2.rabbitMQ之交换机

1.交换机的作用 1.默认交换机会自动指定队列 2.之前一个信息必须被消费1次,现在的是一个消息可以被消费多次(发送到不同队列的前提下,正常情况下一个队列只能消费一次) 3.消息先发给交换机,然后交换机发给多个队列,可以达到多次消费的效果 如图mq3 2.交换机的类型 默认交换机…

【模块系列】DY-SV17F语音播放模块

前言 本文针对官方给的应用手册进行补充和加上个人理解。在官方的资料中已经介绍的很详细了&#xff0c;我就节选部分出来&#xff0c;基本认识模块就行了吧。本来还行自己介绍呢&#xff0c;没想到官方写这么详细了&#xff0c;也不知道介绍啥了&#xff0c;现在单纯的写为个人…

网络安全:钟馗之眼ZOOMEYE搜索引擎使用

网络安全&#xff1a;钟馗之眼ZOOMEYE搜索引擎 地址&#xff1a; 首页 - 网络空间测绘,网络安全,漏洞分析,动态测绘,钟馗之眼,时空测绘,赛博测绘 - ZoomEye("钟馗之眼")网络空间搜索引擎 zoomeye是针对互联网空间的搜索引擎&#xff0c;收录了互联网空间中的设备、…