资源简介
利用keras模仿汪峰生成歌词,这是一个keras中LSTM的入门实例。
代码片段和文件信息
# 此文本用于生成,生成结果会在屏幕上直接输出。
import jieba
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import LSTM embedding
from keras import optimizers
from keras.utils import np_utils
# 使用jieba进行分词
f = open(‘train_data/new_wangfeng.txt‘ ‘r‘)
all_str = f.read().replace(‘\n‘ ‘‘).replace(‘ ‘ ‘‘) # 去除空格
f.close()
cut_list = jieba.cut(all_str)
seg_list = [] # 分词后的文本数据
for c in cut_list:
seg_list.append(c)
# 生成one-hot
vocab = sorted(list(set(seg_list)))
word_to_int = dict((w i) for i w in enumerate(vocab))
int_to_word = dict((i w) for i w in enumerate(vocab))
n_words = len(seg_list) # 总词量
n_vocab = len(vocab) # 词表长度
print(‘总词汇量:‘ n_words)
print(‘词表长度:‘ n_vocab)
seq_length = 100 # 句子长度
dataX = []
dataY = []
for i in range(0 n_words - seq_length 1):
seq_in = seg_list[i:i + seq_length]
seq_out = seg_list[i + seq_length]
dataX.append([word_to_int[word] for word in seq_in])
dataY.append(word_to_int[seq_out])
n_simples = len(dataX)
print(‘样本数量:‘ n_simples)
X = np.reshape(dataX (n_simples seq_length))
y = np_utils.to_categorical(dataY)
# 网络结构
print(‘开始构建网络‘)
model = Sequential()
model.add(embedding(n_vocab 512 input_length=seq_length))
model.add(LSTM(512 input_shape=(seq_length 512) return_sequences=True))
# model.add(Dropout(0.2))
model.add(LSTM(1024))
# model.add(Dropout(0.2))
model.add(Dense(n_vocab activation=‘softmax‘))
print(‘加载网络‘)
filename = “weights-improvement=26-0.105659.hdf5“
model.load_weights(filename)
adam = optimizers.Adam(lr=0.001 beta_1=0.9 beta_2=0.999 epsilon=1e-08)
model.compile(loss=‘categorical_crossentropy‘ optimizer=adam)
# 生成种子
start = np.random.randint(0 len(dataX) - 1)
pattern = dataX[start]
print(“Seed : “)
print(‘‘.join([int_to_word[value] for value in pattern]))
n_generation = 400 # 生成的长度
print(‘开始生成,生成长度为‘ n_generation)
finall_result = []
for i in range(n_generation):
x = np.reshape(pattern (1 len(pattern)))
prediction = model.predict(x verbose=0)[0]
index = np.argmax(prediction)
result = int_to_word[index]
# sys.stdout.write(result)
finall_result.append(result)
pattern.append(index)
pattern = pattern[1:len(pattern)]
# print(finall_result)
for i in range(len(finall_result)):
if finall_result[i] != ‘。‘:
print(finall_result[i] end=‘‘)
else:
print(‘。‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-28 03:06 keras_lstm_generation-master\
文件 66 2018-01-28 03:06 keras_lstm_generation-master\.gitattributes
文件 1357 2018-01-28 03:06 keras_lstm_generation-master\README.md
文件 2609 2018-01-28 03:06 keras_lstm_generation-master\generation.py
文件 2382 2018-01-28 03:06 keras_lstm_generation-master\main.py
文件 341748 2018-01-28 03:06 keras_lstm_generation-master\result.png
目录 0 2018-01-28 03:06 keras_lstm_generation-master\train_data\
文件 6148 2018-01-28 03:06 keras_lstm_generation-master\train_data\.DS_Store
文件 105725 2018-01-28 03:06 keras_lstm_generation-master\train_data\new_wangfeng.txt
文件 395 2018-01-28 03:06 keras_lstm_generation-master\train_data\preprocessing.py
文件 97316 2018-01-28 03:06 keras_lstm_generation-master\train_data\wangfeng.txt
相关资源
- Python-中国科学院大学教务抢课程序多
- Python-BilibiliLiveBarrage实时监控B站直播
- Python-用pyqt5和parametrics实现很酷的动画
- Python-在线网络小说搜索阅读网站
- Python-Camelot一个可以轻松地从PDF文件中
- Python-一个用手势控制的计算器
- Python-最全中华古诗词数据库
- Python-导出qq音乐歌单的小工具导出格
- Python-洛谷冬日绘板脚本
- Python-PermaNote是基于Sandstorm开源的个人
- Python-当朋友给你发iMessage时自动回复
- Python-中国县级行政区划的边界数据并
- Python-垃圾分类助手猜测可能是什么垃
- Python-csv2tex将csv数据变成LaTeX表格
- Python-这是一个DSStore文件泄漏利用脚本
- Python-基于itchat库和图灵机器人实现的
- Python-农业知识图谱农业领域的命名实
- Python-从Python高效处理FASTQ文件
- Python-一个WindowsLinux和Mac的简单键盘记
- Python-Binance虚拟货币交易机器人
- Python-AWDHunter一个基于Python27的AWD自动
- Python-ArkNights自动作战脚本
- Python-导出安卓微信聊天数据工具
- Python-这是一个简单的Web聊天系统可以
评论
共有 条评论