def test_backward(self, b, w, h, c): # TODO: test backward correctly input = np.random.uniform(low=-10, high=10., size=(b, w, h, c)) tf_input = tf.Variable(input) # init keras model inp = Input(batch_shape=(b, w, h, c)) x = Activation(activation='relu')(inp) y = Activation(activation='tanh')(x) Concat = Concatenate(axis=-1)([x, y]) # concatenate of x and y model = Model(inputs=[inp], outputs=Concat) model.compile(optimizer='sgd', loss='mse') # init NumPyNet model net = Network(batch=b, input_shape=(w, h, c)) net.add(Activation_layer(activation='relu')) # layer 1 net.add(Activation_layer(activation='tanh')) # layer 2 net.add(Route_layer(input_layers=(1, 2), by_channels=True)) net.add( Cost_layer(cost_type='mse', scale=1., ratio=0., noobject_scale=1., threshold=0., smoothing=0.)) net.compile(optimizer=SGD()) net._fitted = True # FORWARDS fwd_out_numpynet = net.predict(X=input) with tf.GradientTape() as tape: preds = model(tf_input) grads = tape.gradient(preds, tf_input) fwd_out_keras = preds.numpy() delta_keras = grads.numpy() np.testing.assert_allclose(fwd_out_keras, fwd_out_numpynet, rtol=1e-5, atol=1e-8) net._fitted = False # BACKWARD net._net[3].delta = np.ones(shape=fwd_out_numpynet.shape, dtype=float) net._backward(X=input) delta_numpynet = net._net[0].delta assert delta_numpynet.shape == delta_keras.shape
def test_printer(self, b, w, h, c): net = Network(batch=b, input_shape=(w, h, c)) net.add(Activation_layer(activation='relu')) # layer 1 net.add(Activation_layer(activation='tanh')) # layer 2 net.add(Route_layer(input_layers=(1, 2), by_channels=True)) net.add( Cost_layer(cost_type='mse', scale=1., ratio=0., noobject_scale=1., threshold=0., smoothing=0.)) net.compile(optimizer=SGD()) net.summary()
def test_forward(self, b, w, h, c): input = np.random.uniform(low=-10, high=10., size=(b, w, h, c)).astype(float) # init keras model inp = Input(batch_shape=(b, w, h, c)) x = Activation(activation='relu')(inp) y = Activation(activation='tanh')(x) Concat = Concatenate(axis=-1)([x, y]) # concatenate of x and y model = Model(inputs=[inp], outputs=Concat) model.compile(optimizer='sgd', loss='mse') # init NumPyNet model net = Network(batch=b, input_shape=(w, h, c)) net.add(Activation_layer(activation='relu')) # layer 1 net.add(Activation_layer(activation='tanh')) # layer 2 net.add(Route_layer(input_layers=(1, 2), by_channels=True)) net.add( Cost_layer(cost_type='mse', scale=1., ratio=0., noobject_scale=1., threshold=0., smoothing=0.)) net.compile(optimizer=SGD()) net.summary() assert net._fitted == False net._fitted = True # False control # FORWARDS fwd_out_numpynet = net.predict(X=input) fwd_out_keras = model.predict(x=input, batch_size=b) np.testing.assert_allclose(fwd_out_keras, fwd_out_numpynet, rtol=1e-5, atol=1e-8)
def test_add_metrics(self): check_function_equality = lambda f1, f2: f1.__code__.co_code == f2.__code__.co_code custom_metrics_wrong = lambda y_true, y_pred, a: None custom_metrics_default = lambda y_true, y_pred, a=3.14: None model = Network(batch=42, input_shape=(1, 1, 1)) model.compile(optimizer=Adam(), metrics=[mean_accuracy_score]) assert model.metrics == [mean_accuracy_score] assert all( check_function_equality(x1, x2) for x1, x2 in zip(model.metrics, [mean_accuracy_score])) model.compile(optimizer=Adam(), metrics=[custom_metrics_default]) assert model.metrics == [custom_metrics_default] assert all( check_function_equality(x1, x2) for x1, x2 in zip(model.metrics, [custom_metrics_default])) with pytest.raises(MetricsError): model.compile(optimizer=Adam(), metrics=[custom_metrics_wrong])
model.add(BatchNorm_layer()) model.add(Maxpool_layer(size=2, stride=1, padding=True)) model.add(Connected_layer(outputs=100, activation='Relu')) model.add(BatchNorm_layer()) model.add(Connected_layer(outputs=num_classes, activation='Linear')) model.add(Softmax_layer(spatial=True, groups=1, temperature=1.)) # model.add(Cost_layer(cost_type=cost_type.mse)) # model.compile(optimizer=SGD(lr=0.01, decay=0., lr_min=0., lr_max=np.inf)) model.compile(optimizer=Adam(), metrics=[accuracy]) print('*************************************') print('\n Total input dimension: {}'.format(X_train.shape), '\n') print('**************MODEL SUMMARY***********') model.summary() print('\n***********START TRAINING***********\n') # Fit the model on the training set model.fit(X=X_train, y=y_train, max_iter=10, verbose=True) print('\n***********START TESTING**************\n') # Test the prediction with timing
batch = 20 step = batch y_train = y_train.reshape(-1, 1, 1, 1) y_test = y_test.reshape(-1, 1, 1, 1) # Create the model and training model = Network(batch=batch, input_shape=X_train.shape[1:]) model.add(RNN_layer(outputs=32, steps=step, activation='linear')) model.add(Connected_layer(outputs=8, activation='relu')) model.add(Connected_layer(outputs=1, activation='linear')) model.add(Cost_layer(cost_type='mse')) # keras standard arguments model.compile(optimizer=RMSprop(lr=0.001, epsilon=1e-7))#, metrics=[mean_absolute_error]) print('*************************************') print('\n Total input dimension: {}'.format(X_train.shape), '\n') print('**************MODEL SUMMARY***********') model.summary() print('\n***********START TRAINING***********\n') # Fit the model on the training set model.fit(X=X_train, y=y_train.reshape(-1, 1, 1, 1), max_iter=10) print('\n***********START TESTING**************\n') # Test the prediction with timing
model.add(BatchNorm_layer()) model.add(Maxpool_layer(size=2, stride=1, padding=True)) model.add(Connected_layer(outputs=100, activation='Relu')) model.add(BatchNorm_layer()) model.add(Connected_layer(outputs=num_classes, activation='Linear')) model.add(Softmax_layer(spatial=True, groups=1, temperature=1.)) # model.add(Cost_layer(cost_type=cost_type.mse)) # model.compile(optimizer=SGD(lr=0.01, decay=0., lr_min=0., lr_max=np.inf)) model.compile(optimizer=Adam(lr=1., decay=0.001), metrics=[accuracy]) print('**************************************') print('\n Total input dimension: {}'.format(X_train.shape), '\n') print('**************MODEL SUMMARY***********') model.summary() print('\n***********START TRAINING***********\n') # Fit the model on the training set model.fit(X=X_train, y=y_train, max_iter=10, verbose=True) print('\n***********START TESTING**************\n') # Test the prediction with timing
model.add( Connected_layer(input_shape=(batch, 8, 8, 64), outputs=128, activation='Relu')) model.add(Dropout_layer(prob=0.5)) model.add( Connected_layer(input_shape=(batch, 1, 1, 128), outputs=num_classes, activation='Linear')) model.add(Softmax_layer(spatial=True)) print('*************************************') print('\n Total input dimension: {}'.format(X_train.shape), '\n') print('*************************************') model.compile(optimizer=Adam) model.summary() print('\n***********START TRAINING***********\n') # Fit the model on the training set model.fit(X=X_train, y=y_train, max_iter=5) print('\n***********END TRAINING**************\n') # Test the prediction out = model.predict(X=X_test) truth = y_test.argmax(axis=3).ravel()