2017-12-06 13 views
1
keras.layers.GRU(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0, implementation=1, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False) 

入力の重みの初期化子は 'glorot_uniform'で、隠れた統計の重みの初期化子は 'orthognal'でバイアスの初期化子は '0'です。KERASのGRUのデフォルトの非表示状態は何ですか?

しかし、私はそれはゼロだGRU

答えて

1

の最初の隠された状態の初期化子を知りません。 recurrent.pyに次の行があります。あなたは初期状態を指定せずにGRU層を呼び出し、層は、すなわち一般的な使用GRU(...)(x)、ステートフルでないとき

def get_initial_state(self, inputs): 
    # build an all-zero tensor of shape (samples, output_dim) 
    initial_state = K.zeros_like(inputs) # (samples, timesteps, input_dim) 
    initial_state = K.sum(initial_state, axis=(1, 2)) # (samples,) 
    initial_state = K.expand_dims(initial_state) # (samples, 1) 
    if hasattr(self.cell.state_size, '__len__'): 
     return [K.tile(initial_state, [1, dim]) 
       for dim in self.cell.state_size] 
    else: 
     return [K.tile(initial_state, [1, self.cell.state_size])] 

この関数は、最初の隠れ状態を取得するために使用されます。

def call(self, 
     inputs, 
     mask=None, 
     training=None, 
     initial_state=None, 
     constants=None): 
    # input shape: `(samples, time (padded with zeros), input_dim)` 
    # note that the .build() method of subclasses MUST define 
    # self.input_spec and self.state_spec with complete input shapes. 
    if isinstance(inputs, list): 
     inputs = inputs[0] 
    if initial_state is not None: 
     pass 
    elif self.stateful: 
     initial_state = self.states 
    else: 
     initial_state = self.get_initial_state(inputs) 
関連する問題