def __init__(self, sequences_value, pred_length, delta = 1., sequence_weights=None, proxy_layer=None, sample_stddev=None, **kwargs):
"""
can only be the first layer of an architecture
sequences_value[sequence, event, type, feature]
sequences only contain training events
"""
self.sequences_value = np.array(sequences_value,dtype='float32')
self.sequences_initializer = Constant(self.sequences_value)
shape = self.sequences_value.shape
self.nb_sequence = shape[0]
self.nb_event = shape[1]
self.nb_type = shape[2]
self.nb_feature = shape[3]
self.pred_length = pred_length
self.delta = delta
self.proxy_layer = proxy_layer
self.sample_stddev = sample_stddev
if self.proxy_layer:
super(HawkesLayer, self).__init__(**kwargs)
return
if sequence_weights:
assert len(sequence_weights) == self.nb_sequence
assert len(sequence_weights[0]['spont']) == self.nb_type
self.spont_initializer = Constant(np.array([x['spont'] for x in sequence_weights]))
self.Theta_initializer = Constant(np.array([x['theta'] for x in sequence_weights]))
self.W_initializer = Constant(np.array([x['w'] for x in sequence_weights]))
self.Alpha_initializer = Constant(np.array([x['alpha'] for x in sequence_weights]))
else:
self.spont_initializer = Constant(np.array([[1.3 for j in range(self.nb_type)] for i in range(self.nb_sequence)]))
self.Theta_initializer = Constant(np.array([[0.05 for j in range(self.nb_type)] for i in range(self.nb_sequence)]))
self.W_initializer = Constant(np.array([[1. for j in range(self.nb_type)] for i in range(self.nb_sequence)]))
self.Alpha_initializer = Constant(np.array([[[1. for k in range(self.nb_type)] for j in range(self.nb_type)] for i in range(self.nb_sequence)]))
super(HawkesLayer, self).__init__(**kwargs)
评论列表
文章目录