pytorch en nn.RNN () Resumen

nn.RNN (input_size, hidden_size, num_layers = 1, la no linealidad = tanh, el sesgo = True, batch_first = False, la deserción = 0, bidireccional = False)

Descripción del parámetro

  • input_sizedimensión característica de entrada, es generalmente RNN vector de palabra de entrada, a continuación, dimensión input_size igual a un vector de palabra
  • hidden_sizeDimensiones ocultas número de capa neurona, o también llamada la salida (salida como RNN está oculto en el paso de tiempo respectivo)
  • num_layerscapas de red
  • nonlinearityfunción de activación
  • biasYa sea sesgo
  • batch_firstForma de datos de entrada, el valor predeterminado es Falso, este es el formulario, (seq (num_step), lote, input_dim), es decir, longitud de la secuencia, en primer lugar, el segundo lugar BATCH
  • dropoutSi se debe aplicar la deserción, no se utiliza de forma predeterminada, debe estar configurado para utilizar un convertidor digital a 0-1
  • birdirectionalSi desea utilizar bidireccional RNN, el valor predeterminado es False
    Tenga en cuenta que los valores por defecto de algunos parámetros se han especificado en el título

O forma

  1. = Input_shape [número de pasos de tiempo, el tamaño del lote, dimensiones especiales] = [para num_steps (seq_length), la batch_size, input_dim]
  2. Después de calcular el retorno a la parte frontal, respectivamente 输出, y 隐藏状态hen el que las de salida de medio de la capa oculta y la salida calculada en cada paso de tiempo ocultos, que generalmente siguen la capa de salida como una entrada START. Se hace hincapié en que la "salida" sí mismo no se dirige a la capa de salida se calcula, la forma de (el número de pasos de tiempo, el tamaño del lote, el número de unidades ocultas) ; estado oculto se refiere a una capa oculta de estados ocultos el último paso de tiempo: cuando Ocultar cuando la capa de múltiples capas, cada uno de los un nivel se registran en la variable de estado oculto; 对于像⻓短期记忆(LSTM),隐藏状态是⼀个元组(h, c),即hidden state和cell state(此处普通rnn只有一个值)forma de h oculto (el número de capas, el tamaño del lote, el número de unidades ocultas)

código

rnn_layer = nn.RNN(input_size=vocab_size, hidden_size=num_hiddens, )
# 定义模型, 其中vocab_size = 1027, hidden_size = 256
num_steps = 35
batch_size = 2
state = None    # 初始隐藏层状态可以不定义
X = torch.rand(num_steps, batch_size, vocab_size)
Y, state_new = rnn_layer(X, state)
print(Y.shape, len(state_new), state_new.shape)

exportación

torch.Size([35, 2, 256])     1       torch.Size([1, 2, 256])

cálculo específico
Ht de la entrada * = + Ht de la de WXH-WHH. 1 * + BIAS
[el batch_size, input_dim] * [input_dim, num_hiddens] + [el batch_size, num_hiddens] * [num_hiddens, num_hiddens] + BIAS
puede encontrar un estado oculto de cada forma es [batch_size, num_hiddens], la salida inicial es el mismo
Nota: para la conveniencia lo anterior hipótesis num_step = 1

GRU / LSTM con los parámetros anteriores RNN

Publicado 33 artículos originales · ganado elogios 1 · vistas 2620

Supongo que te gusta

Origin blog.csdn.net/orangerfun/article/details/103934290
Recomendado
Clasificación