目录
问题描述:
选择一位歌手的英文歌曲,以txt文件存储在python文件同级。
参考歌词文件:
解决思路:
1.LSTM算法
LSTM算法建立在RNN算法的基础上。LSTM解决了,RNN算法在训练过程中会出现梯度消失的情况。
在LSTM单位中,有三种门槛。分别是忘记门槛,输入门槛和输出门槛。数据的更新将是沿着从左到右来进行更新。
其中三种门槛的作用分别是
a)选择进行更新的是哪种数据
b)选择哪种数据应该存入到内存中
c)决定该输出哪种数据
2.具体实现
实现步骤
a)导入数据包和文件读取:
import numpy as np
import tensorflow as tf
with open("ZaynLyrics.txt","r") as f:
data = f.read()
data = data.replace('\n','')
data = data.lower()
# 检验数据是否导入成功
# print(data[:50])
b)然后,将所有字符存储在all_chars变量中:
#store all the charachters in the all_chars variable
all_chars = list(set(data))
c)将唯一字符的数量存储在unique_chars中:
#store the number of unique characters
unique_chars = len(all_chars)
d)我们还将字符总数存储在total_chars中:
#store the total number of character
total_chars =len(data)
e)建立字符与索引相互之间的映射。如:char_to_ix 代表字符到索引的映射
char_to_ix = {ch:i for i ,ch in enumerate(all_chars)}
ix_to_char = {i:ch for i ,ch in enumerate(all_chars)}
f)接下来,定义一个generate_batch函数,它将生成输入值和目标值。目标值就是i乘以输入值的位移
def generate_batch(s