def test_mixing_preprocessing_and_regular_layers(self): x0 = Input(shape=(10, 10, 3)) x1 = Input(shape=(10, 10, 3)) x2 = Input(shape=(10, 10, 3)) y0 = merge.Add()([x0, x1]) y1 = image_preprocessing.CenterCrop(8, 8)(x2) y1 = convolutional.ZeroPadding2D(padding=1)(y1) z = merge.Add()([y0, y1]) z = normalization.Normalization()(z) z = convolutional.Conv2D(4, 3)(z) stage = preprocessing_stage.FunctionalPreprocessingStage([x0, x1, x2], z) data = [ np.ones((12, 10, 10, 3), dtype='float32'), np.ones((12, 10, 10, 3), dtype='float32'), np.ones((12, 10, 10, 3), dtype='float32') ] stage.adapt(data) _ = stage(data) stage.compile('rmsprop', 'mse') with self.assertRaisesRegex(ValueError, 'Preprocessing stage'): stage.fit(data, np.ones((12, 8, 8, 4))) ds_x0 = dataset_ops.Dataset.from_tensor_slices(np.ones((12, 10, 10, 3))) ds_x1 = dataset_ops.Dataset.from_tensor_slices(np.ones((12, 10, 10, 3))) ds_x2 = dataset_ops.Dataset.from_tensor_slices(np.ones((12, 10, 10, 3))) ds_x = dataset_ops.Dataset.zip((ds_x0, ds_x1, ds_x2)) ds_y = dataset_ops.Dataset.from_tensor_slices(np.ones((12, 8, 8, 4))) dataset = dataset_ops.Dataset.zip((ds_x, ds_y)).batch(4) with self.assertRaisesRegex(ValueError, 'Preprocessing stage'): stage.fit(dataset) _ = stage.evaluate(data, np.ones((12, 8, 8, 4))) _ = stage.predict(data)
def test_export_multi_input_functional_keras_model(self): x1 = input_layer.Input((2,), name="x1") x2 = input_layer.Input((2,), name="x2") y1 = core.Dense(4)(merge.Add()([x1, x2])) y2 = core.Dense(4)(merge.Multiply()([x1, x2])) model = training.Model([x1, x2], [y1, y2]) save_dir = os.path.join(self.get_temp_dir(), "saved_model") save.save(model, save_dir) outputs = model([array_ops.ones([1, 2]), 2. * array_ops.ones([1, 2])]) self.assertAllClose( {"dense": outputs[0], "dense_1": outputs[1]}, _import_and_infer( save_dir, {"x1": [[1., 1.]], "x2": [[2., 2.]]}))