Mac*_*God 4 python lstm keras tensorflow
我将Keras与TensorFlow一起用作后端。如果我想对LSTM单元进行修改,例如“移除”输出门,该怎么办?这是一个乘法门,因此我将不得不将其设置为固定值,以便无论乘以什么都没有效果。
首先,您应该定义自己的自定义图层。如果您需要一些直觉如何实现自己的单元,请参阅Keras存储库中的LSTMCell。例如,您的自定义单元格将是:
class MinimalRNNCell(keras.layers.Layer):
def __init__(self, units, **kwargs):
self.units = units
self.state_size = units
super(MinimalRNNCell, self).__init__(**kwargs)
def build(self, input_shape):
self.kernel = self.add_weight(shape=(input_shape[-1], self.units),
initializer='uniform',
name='kernel')
self.recurrent_kernel = self.add_weight(
shape=(self.units, self.units),
initializer='uniform',
name='recurrent_kernel')
self.built = True
def call(self, inputs, states):
prev_output = states[0]
h = K.dot(inputs, self.kernel)
output = h + K.dot(prev_output, self.recurrent_kernel)
return output, [output]
Run Code Online (Sandbox Code Playgroud)
然后,使用tf.keras.layers.RNN
以使用您的单元格:
cell = MinimalRNNCell(32)
x = keras.Input((None, 5))
layer = RNN(cell)
y = layer(x)
# Here's how to use the cell to build a stacked RNN:
cells = [MinimalRNNCell(32), MinimalRNNCell(64)]
x = keras.Input((None, 5))
layer = RNN(cells)
y = layer(x)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1939 次 |
最近记录: |