def __init__(self, embedding_size: int, vocabulary_size: int, empirical_distribution, representation_size: int,
hyperparameters: dict, encoder_type: str, name: str = "GRUSequenceSiameseEncoder", use_centroid=False):
self.__hyperparameters = hyperparameters
self.__name = name
log_init_noise = self.__hyperparameters["log_init_noise"]
self.__memory_size = representation_size
self.__embedding_size = embedding_size
self.__vocabulary_size = vocabulary_size
self.__empirical_distribution = empirical_distribution
self.__encoder_type = encoder_type
embeddings = np.random.randn(vocabulary_size, embedding_size) * 10 ** log_init_noise
self.__embeddings = theano.shared(embeddings.astype(theano.config.floatX), name=name + ":embeddings")
self.__name_bias = theano.shared(np.log(empirical_distribution).astype(theano.config.floatX),
name=name + ":name_bias")
encoder_init_state = np.random.randn(representation_size) * 10 ** log_init_noise
self.__encoder_init_state = theano.shared(encoder_init_state.astype(theano.config.floatX),
name=name + ":encoder_init_state")
self.__rng = RandomStreams()
self.__input_sequence = T.ivector(name + ":input_sequence")
if encoder_type == 'gru':
self.__encoder = GRU(self.__embeddings, representation_size, embedding_size,
self.__hyperparameters, self.__rng, name=name + ":GRUSequenceEncoder",
use_centroid=use_centroid)
elif encoder_type == 'averaging_gru':
self.__encoder = AveragingGRU(self.__embeddings, representation_size, embedding_size,
self.__hyperparameters, self.__rng,
name=name + ":AveragingGRUSequenceEncoder", use_centroid=use_centroid)
else:
raise Exception("Unrecognized encoder type `%s`, possible options `gru` and `averaging_gru`")
self.__params = {"embeddings": self.__embeddings,
"encoder_init_state": self.__encoder_init_state}
self.__params.update(self.__encoder.get_params())
评论列表
文章目录