基于文本内容及其前后信息进行预测
基于目标不同时刻状态进行预测
基于数据历史信息进行预测
序列模型:输入或者输出中包含有序列数据的模型
突出数据的前后序列关系
两大特点:
前部序列的信息经处理后,作为输入信息传递到后部序列
任务:
自动寻找语句中的人名:
词汇数值化:建立一个词汇-数值一一对应的字典,然后把输入词汇转化数值矩阵
字典生成的另外一种方式
RNN常见结构
多输入对多输出、维度相同RNN结构
应用:特定信息识别
应用:情感识别
举例:I feel happy watching the movie
判断:positive
应用:序列数据生成器
举例:文章生成、音乐生成
应用:语言翻译
普通RNN结构缺陷
需要提高前部特定信息的决策权重
长短期记忆网络(LSTM)
双向循环神经网络(BRNN)
做判断时,把后部序列信息也考虑
深层循环神经网络(DRNN)
解决更复杂的序列任务,可以把单层RNN叠起来或者在输出前和普通mlp结构结合使用
提取序列数据:
def extract_data(data,slide):
x=[]
y=[]
for i in range(len(data)-slide):
x.append([a for a in data[i:i+slide]])
y.append(data[i+slide])
x=np.array(x)
x=x.reshape(x.shape[0],x.shape[1],1)
return x,y
建立普通RNN模型:
from keras.models import Sequential
from keras.layers import Dense,SimpleRNN
model = Sequential()
#增加一个RNN层
model.add(SimpleRNN(units=5,input_shape=(X.shape[1],X.shape[2]),activation='relu'))
#增加输出层
model.add(Dense(units=1,activation='linear'))
model.compile(optimizer='adam',loss='mean_squared_error')
文本加载:
rew_data = open('flare').read()
# 移除换行字符'\n'
data = rew_data.replace('\n','').replace('\r','')
字符字典建立:
#字符去重
letters = list(set(data))
#建立数字到字符的索引字典
int_to_char = {
a:b for a,b in enumerate(letters)}
#建立字符到数字的索引字典
char_to_int = {
b:a for a,b