Aşağıdaki kod Tensorflow'un GRUCell
biriminde, önceki gizli durum, sıradaki geçerli girişle birlikte sağlandığında, güncellenmiş bir gizli durum elde etmek için tipik işlemleri gösterir.Tensorflow'da GRU hücresinin açıklaması?
def __call__(self, inputs, state, scope=None):
"""Gated recurrent unit (GRU) with nunits cells."""
with vs.variable_scope(scope or type(self).__name__): # "GRUCell"
with vs.variable_scope("Gates"): # Reset gate and update gate.
# We start with bias of 1.0 to not reset and not update.
r, u = array_ops.split(1, 2, _linear([inputs, state],
2 * self._num_units, True, 1.0))
r, u = sigmoid(r), sigmoid(u)
with vs.variable_scope("Candidate"):
c = self._activation(_linear([inputs, r * state],
self._num_units, True))
new_h = u * state + (1 - u) * c
return new_h, new_h
Ama herhangi weights
ve biases
burada görmüyorum. , ör. Benim anlayışım, r
ve u
kodlarının, güncellenmiş bir gizli durum elde etmek için mevcut giriş ve/veya gizli durumla çarpılması gereken ağırlıkların ve önyargıların olması gerektiğiydi. aşağıdaki gibi bir gru birimi yazdım
:
İştedef gru_unit(previous_hidden_state, x):
r = tf.sigmoid(tf.matmul(x, Wr) + br)
z = tf.sigmoid(tf.matmul(x, Wz) + bz)
h_ = tf.tanh(tf.matmul(x, Wx) + tf.matmul(previous_hidden_state, Wh) * r)
current_hidden_state = tf.mul((1 - z), h_) + tf.mul(previous_hidden_state, z)
return current_hidden_state
açıkça vb ağırlıklar Wx, Wr, Wz, Wh
ve bias br, bh, bz
, faydalanmak gizli devlet güncellenmesini. Bu ağırlıklar ve önyargılar, eğitimden sonra öğrenilen/ayarlanan şeylerdir.
Yukarıdaki gibi aynı sonucu elde etmek için Tensorflow'un yerleşik GRUCell
'u nasıl kullanabilirim?
Onlar 'r' ve tek seferde her şeyi yapmasına' z' kapısı bitiştirmek, hesaplama kaydeder. –