def __init__(self, batch_size, emb_X, lstm_params, output_size):
super().__init__(batch_size)
self.inputs = [T.imatrix('input'), T.matrix('mask')]
self.target = T.matrix('target')
l = InputLayer((batch_size, None), self.inputs[0])
l_mask = InputLayer((batch_size, None), self.inputs[1])
l = EmbeddingLayer(l, emb_X.shape[0], emb_X.shape[1], W=emb_X)
for lstm_param in lstm_params:
l = LSTMLayer(
l, lstm_param, grad_clipping=100, nonlinearity=tanh, mask_input=l_mask, only_return_final=True
)
l = DenseLayer(l, output_size, nonlinearity=identity)
self.pred = get_output(l, deterministic=True)
self.loss = T.mean(aggregate(squared_error(get_output(l), self.target)))
params = get_all_params(l, trainable=True)
self.update_params = [T.scalar('learning_rate')]
self.updates = rmsprop(self.loss, params, learning_rate=self.update_params[0])
self.metrics = {'train': [rmse], 'val': [rmse]}
self.network = l
self.compile()
评论列表
文章目录