def _load_model(self): tf.reset_default_graph() rnn_layers = [RecurrentLayer(num_units=3, cell_factory=GRUCellFactory())] fc_layers = [DenseLayer(num_units=5)] self.model = RNNWrapper(rnn_layers, fc_layers, embeddings=self.embeddings, num_epochs=6)
def test_dropout_invalid(self): with pytest.raises(InvalidArgumentError): rnn_layers = [RecurrentLayer(num_units=5, dropout_rate=-0.34)] fc_layers = [DenseLayer(num_units=15)] model = RecurrentNeuralNetwork(rnn_layers, fc_layers, embeddings=self.embeddings) trainer = BaseTrainer(model) trainer.train(self.x_train, self.y_train)
def test_early_stopping(self): rnn_layers = [RecurrentLayer(num_units=3, cell_factory=SimpleCellFactory())] fc_layers = [DenseLayer(num_units=5)] model = RecurrentNeuralNetwork(rnn_layers, fc_layers, embeddings=self.embeddings) trainer = EarlyStoppingTrainer(model, num_epochs=100, batch_size=1, max_epochs_no_progress=5, validation_data=(self.x_val, self.y_val)) trainer.train(self.x_train, self.y_train) assert trainer._epochs_completed < 100 # early stopping
def test_invalid_data(self): rnn_layers = [RecurrentLayer(num_units=5)] fc_layers = [DenseLayer(num_units=15)] model = RecurrentNeuralNetwork(rnn_layers, fc_layers, embeddings=self.embeddings) trainer = BaseTrainer(model) with pytest.raises(InvalidArgumentError): trainer.train([1, 2, 3, 4], [1, 2, 3, 4]) # x must be 2d with pytest.raises(InvalidArgumentError): trainer.train([[1, 2], [2, 3]], 0) # y must be 1d with pytest.raises(InvalidArgumentError): trainer.train('asd', 'fgh') # data must be numbers
def test_base_training(self): rnn_layers = [RecurrentLayer(num_units=3, cell_factory=GRUCellFactory())] fc_layers = [DenseLayer(num_units=5)] model = RecurrentNeuralNetwork(rnn_layers, fc_layers, embeddings=self.embeddings) trainer = BaseTrainer(model, num_epochs=100, batch_size=1) trainer.train(self.x_train, self.y_train) self._assert_op_in_graph(model, 'Adam', 'dnn/rnn_layers') self._assert_op_in_graph(model, 'rnn_layer', 'dnn/rnn_layers') self._assert_op_in_graph(model, 'Adam', 'dnn/fc_layers') self._assert_op_in_graph(model, 'dense_layer', 'dnn/fc_layers') assert trainer._epochs_completed == 100
def setUp(self): self.valid_input = [ "This is my friend, he is angry.", "Hello, why are you angry?" ] self.invalid_input = [["this", "is", "already", "tokenized"]] self.embeddings_dir = os.path.join('test', 'data', 'embeddings') self.preprocessor = TextPreprocessor(remove_stop_words=True) self.preprocessor.fit([]) doc2vec_model = Doc2Vec.load( os.path.join(self.embeddings_dir, 'd2v_test.model')) self.doc_emb = DocumentEmbeddingsTransformer( Doc2VecEmbedding(model=doc2vec_model)) self.word_emb = WordEmbeddingsTransformer( CrossLingualPretrainedEmbedding(self.embeddings_dir, 'en')) self.padder = SentencePadder(padding_length=5) self.rnn_layers = [ RecurrentLayer(num_units=3, cell_factory=GRUCellFactory()) ] self.fc_layers = [DenseLayer(num_units=5)]
def setUp(self): self.rnn_layers = [RecurrentLayer(num_units=3, cell_factory=GRUCellFactory())] self.fc_layers = [DenseLayer(num_units=5)] embeddings_dir = os.path.join('test', 'data', 'embeddings') model = Word2Vec.load(os.path.join(embeddings_dir, 'w2v_test.model')) self.embeddings = Word2VecEmbedding(model=model) self.x_train = [[0, 2, 1, 0], [2, 1, 0, 0], [3, 1, 0, 1], [2, 0, 0, 0], [1, 3, 3, 1]] self.y_train = [0, 0, 1, 0, 1] self.x_val = [ [0, 1, 2, 0], [2, 1, 2, 3] ] self.y_val = [0, 1] tf.reset_default_graph()
def test_layer_config_invalid(self): with pytest.raises(InvalidArgumentError): config = 5 rnn_layer = RecurrentLayer(num_units=2) rnn_layer.load_config(config)
def test_layer_config_valid(self): config = LayerConfig(num_units=5) rnn_layer = RecurrentLayer(num_units=2) assert rnn_layer.num_units == 2 rnn_layer.load_config(config) assert rnn_layer.num_units == 5