Tensorflow⑦——循环神经网络使用方法及API实现

  1. 卷积神经网络与循环神经网络简单对比
  • CNN: 借助卷积核(kernel)提取特征后,送入后续网络(如全连接网络 Dense),进行分类、目标检测等操作。CNN 借助卷积核从空间维度提取信息,卷积核参数空间共享。
  • RNN: 借助循环核(cell)提取特征后,送入后续网络(如全连接网络 Dense),进行预测等操作。RNN 借助循环核从时间维度提取信息,循环核参数时间共享。
  1. TF描述循环计算层:送入RNN之前,x_train维度是[送入样本数, 循环核时间展开步数, 每个时间步输入特征个数]

1、tf.keras.layers.SimpleRNN

tf.keras.layers.SimpleRNN(记忆体个数, activation=‘激活函数’ , return_sequences=是否每个时刻输出ht到下一层)

activation=‘激活函数’ (不写,默认使用tanh)
return_sequences=True 各时间步输出ht,return_sequences=False 仅最后时间步输出ht(默认)

# 举例如下
SimpleRNN(3, return_sequences=True)

2、tf.keras.layers.Embedding

tf.keras.layers.Embedding:词向量空间编码层

 tf.keras.layers.Embedding(词汇表大小,编码维度)
	词汇表大小:编码一共要表示多少个单词;
	编码维度:用几个数字表达一个单词;
	输入维度:二维张量[送入样本数,循环核时间展开步数]
	输出维度:三维张量[送入样本数,循环核时间展开步数,编码维度]
# 举例如下
tf.keras.layers.Embedding(100, 3)
#对数字 1-100 进行编码,词汇表大小就是 100 ;每个自然数用三个数字表示,编码维度就是 3;所以 Embedding层的参数是 100 和 3。
# 比如数字[4] embedding 为 [0.25, 0.1, 0.11]。

送入RNN中,我们可以这么写

x_train = np.reshape(x_train, (len(x_train), 1))
# 之后送入代码块中,在model=tf.keras.Sequential中,首先写如下代码
Embedding(5, 2) # 表示一共有5个元素,每个元素用2个维度表示

3、tensorflow.keras.layers.LSTM

在这里插入图片描述

tensorflow.keras.layers.LSTM(记忆体个数, activation=‘激活函数’ , return_sequences=是否每个时刻输出ht到下一层)

activation=‘激活函数’ (不写,默认使用tanh)
return_sequences=True 各时间步输出ht,return_sequences=False 仅最后时间步输出ht(默认)

# 举例如下
model = tf.keras.Sequential([
    LSTM(80, return_sequences=True),
    Dropout(0.2),
    LSTM(100),
    Dropout(0.2),
    Dense(1)
])

4、tensorflow.keras.layers.GRU

在这里插入图片描述

tensorflow.keras.layers.GRU(记忆体个数, activation=‘激活函数’ , return_sequences=是否每个时刻输出ht到下一层)

activation=‘激活函数’ (不写,默认使用tanh)
return_sequences=True 各时间步输出ht,return_sequences=False 仅最后时间步输出ht(默认)

# 举例如下
model = tf.keras.Sequential([
    GRU(80, return_sequences=True),
    Dropout(0.2),
    GRU(100),
    Dropout(0.2),
    Dense(1)
])

猜你喜欢

转载自blog.csdn.net/CRW__DREAM/article/details/127614340