def test_tfoptimizer(): from keras import constraints import tensorflow as tf if tf.__version__.startswith('1.'): optimizer = optimizers.TFOptimizer(tf.train.AdamOptimizer()) else: optimizer = tf.keras.optimizers.Adam() model = Sequential() model.add( Dense(num_classes, input_shape=(3, ), kernel_constraint=constraints.MaxNorm(1))) model.compile(loss='mean_squared_error', optimizer=optimizer) model.fit(np.random.random((5, 3)), np.random.random((5, num_classes)), epochs=1, batch_size=5, verbose=0) if tf.__version__.startswith('1.'): with pytest.raises(NotImplementedError): optimizer.weights with pytest.raises(NotImplementedError): optimizer.get_config() with pytest.raises(NotImplementedError): optimizer.from_config(None)
def test_dense(): layer_test(layers.Dense, kwargs={'units': 3}, input_shape=(3, 2)) layer_test(layers.Dense, kwargs={'units': 3}, input_shape=(3, 4, 2)) layer_test(layers.Dense, kwargs={'units': 3}, input_shape=(None, None, 2)) layer_test(layers.Dense, kwargs={'units': 3}, input_shape=(3, 4, 5, 2)) layer_test(layers.Dense, kwargs={ 'units': 3, 'kernel_regularizer': regularizers.l2(0.01), 'bias_regularizer': regularizers.l1(0.01), 'activity_regularizer': regularizers.L1L2(l1=0.01, l2=0.01), 'kernel_constraint': constraints.MaxNorm(1), 'bias_constraint': constraints.max_norm(1) }, input_shape=(3, 2)) layer = layers.Dense(3, kernel_regularizer=regularizers.l1(0.01), bias_regularizer='l1') layer.build((None, 4)) assert len(layer.losses) == 2
def test_maxout_dense(): from keras import regularizers from keras import constraints layer_test(core.MaxoutDense, kwargs={'output_dim': 3}, input_shape=(3, 2)) layer_test(core.MaxoutDense, kwargs={ 'output_dim': 3, 'W_regularizer': regularizers.l2(0.01), 'b_regularizer': regularizers.l1(0.01), 'activity_regularizer': regularizers.activity_l2(0.01), 'W_constraint': constraints.MaxNorm(1), 'b_constraint': constraints.MaxNorm(1) }, input_shape=(3, 2))
def test_tfoptimizer_pass_correct_named_params_to_native_tensorflow_optimizer( ): from keras import constraints from tensorflow import train class MyTfOptimizer(train.Optimizer): wrapping_optimizer = train.AdamOptimizer() def compute_gradients(self, loss, **kwargs): return super(MyTfOptimizer, self).compute_gradients(loss, **kwargs) def apply_gradients(self, grads_and_vars, **kwargs): return self.wrapping_optimizer.apply_gradients( grads_and_vars, **kwargs) my_tf_optimizer = MyTfOptimizer(use_locking=False, name='MyTfOptimizer') optimizer = optimizers.TFOptimizer(my_tf_optimizer) model = Sequential() model.add( Dense(num_classes, input_shape=(3, ), kernel_constraint=constraints.MaxNorm(1))) model.compile(loss='mean_squared_error', optimizer=optimizer) model.fit(np.random.random((5, 3)), np.random.random((5, num_classes)), epochs=1, batch_size=5, verbose=0)
def test_timedistributeddense(): from keras import regularizers from keras import constraints layer_test(core.TimeDistributedDense, kwargs={'output_dim': 2, 'input_length': 2}, input_shape=(3, 2, 3)) layer_test(core.TimeDistributedDense, kwargs={'output_dim': 3, 'W_regularizer': regularizers.l2(0.01), 'b_regularizer': regularizers.l1(0.01), 'activity_regularizer': regularizers.activity_l2(0.01), 'W_constraint': constraints.MaxNorm(1), 'b_constraint': constraints.MaxNorm(1)}, input_shape=(3, 2, 3))
def test_cosinedense(): from keras import regularizers from keras import constraints from keras.models import Sequential layer_test(core.CosineDense, kwargs={'units': 3}, input_shape=(3, 2)) layer_test(core.CosineDense, kwargs={'units': 3}, input_shape=(3, 4, 2)) layer_test(core.CosineDense, kwargs={'units': 3}, input_shape=(None, None, 2)) layer_test(core.CosineDense, kwargs={'units': 3}, input_shape=(3, 4, 5, 2)) layer_test(core.CosineDense, kwargs={ 'units': 3, 'kernel_regularizer': regularizers.l2(0.01), 'bias_regularizer': regularizers.l1(0.01), 'activity_regularizer': regularizers.l2(0.01), 'kernel_constraint': constraints.MaxNorm(1), 'bias_constraint': constraints.MaxNorm(1) }, input_shape=(3, 2)) X = np.random.randn(1, 20) model = Sequential() model.add(core.CosineDense(1, use_bias=True, input_shape=(20, ))) model.compile(loss='mse', optimizer='rmsprop') W = model.get_weights() W[0] = X.T W[1] = np.asarray([1.]) model.set_weights(W) out = model.predict(X) assert_allclose(out, np.ones((1, 1), dtype=K.floatx()), atol=1e-5) X = np.random.randn(1, 20) model = Sequential() model.add(core.CosineDense(1, use_bias=False, input_shape=(20, ))) model.compile(loss='mse', optimizer='rmsprop') W = model.get_weights() W[0] = -2 * X.T model.set_weights(W) out = model.predict(X) assert_allclose(out, -np.ones((1, 1), dtype=K.floatx()), atol=1e-5)
def test_tfoptimizer(): from keras import constraints from tensorflow import train optimizer = optimizers.TFOptimizer(train.AdamOptimizer()) model = Sequential() model.add(Dense(num_classes, input_shape=(3,), kernel_constraint=constraints.MaxNorm(1))) model.compile(loss='mean_squared_error', optimizer=optimizer) model.fit(np.random.random((5, 3)), np.random.random((5, num_classes)), epochs=1, batch_size=5, verbose=0) # not supported with pytest.raises(NotImplementedError): optimizer.weights with pytest.raises(NotImplementedError): optimizer.get_config() with pytest.raises(NotImplementedError): optimizer.from_config(None)