Tensorflow⑦——Método de uso de red neuronal recurrente e implementación de API

  1. Comparación simple entre red neuronal convolucional y red neuronal recurrente
  • CNN: después de extraer características con la ayuda de un kernel de convolución (kernel), se envía a una red posterior (como una red Dense completamente conectada) para clasificación, detección de objetivos y otras operaciones. CNN extrae información de dimensiones espaciales con la ayuda de núcleos de convolución , y se comparte el espacio de parámetros del núcleo de convolución.
  • RNN: después de extraer las características con la ayuda del núcleo cíclico (célula), se envía a la red posterior (como la red Dense completamente conectada) para la predicción y otras operaciones. RNN extrae información de la dimensión del tiempo con la ayuda de núcleos recurrentes , y los parámetros del núcleo recurrente se comparten en el tiempo.
  1. TF describe la capa de cálculo cíclico : antes de enviarlo a RNN, la dimensión x_train es [la cantidad de muestras enviadas, la cantidad de pasos de expansión de tiempo del kernel cíclico y la cantidad de características de entrada en cada paso de tiempo]

1, tf.keras.layers.SimpleRNN

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

activación='función de activación' (no escrito, tanh se usa de manera predeterminada) return_sequences=True genera h t
en cada paso de tiempo , return_sequences=False solo genera h t en el último paso de tiempo (predeterminado)

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

2, tf.keras.layers.Incrustación

tf.keras.layers.Embedding: capa de codificación de espacio vectorial de palabra

 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]。

en el RNN, podemos escribir

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

3, tensorflow.keras.layers.LSTM

inserte la descripción de la imagen aquí

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

activación='función de activación' (no escrito, tanh se usa de manera predeterminada) return_sequences=True genera h t
en cada paso de tiempo , return_sequences=False solo genera h t en el último paso de tiempo (predeterminado)

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

4, tensorflow.keras.layers.GRU

inserte la descripción de la imagen aquí

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

activación='función de activación' (no escrito, tanh se usa de manera predeterminada) return_sequences=True genera h t
en cada paso de tiempo , return_sequences=False solo genera h t en el último paso de tiempo (predeterminado)

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

Supongo que te gusta

Origin blog.csdn.net/CRW__DREAM/article/details/127614340
Recomendado
Clasificación