def test_ragged_input_pad_and_mask(self): input_data = ragged_factory_ops.constant([[1, 2, 3, 4, 5], []]) expected_mask = np.array([True, False]) output = ToDense(pad_value=-1, mask=True)(input_data) self.assertTrue(hasattr(output, "_keras_mask")) self.assertIsNot(output._keras_mask, None) self.assertAllEqual(K.get_value(output._keras_mask), expected_mask)
def test_sparse_input_pad_and_mask(self): input_data = sparse_tensor.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4]) expected_mask = np.array([True, True, False]) output = ToDense(pad_value=-1, mask=True)(input_data) self.assertTrue(hasattr(output, "_keras_mask")) self.assertIsNot(output._keras_mask, None) self.assertAllEqual(K.get_value(output._keras_mask), expected_mask)
def SKIP_test_ragged_input_default_padding(self): input_data = get_input_dataset( ragged_factory_ops.constant([[1, 2, 3, 4, 5], [2, 3]])) expected_output = np.array([[1, 2, 3, 4, 5], [2, 3, 0, 0, 0]]) layers = [ToDense(), Final()] model = testing_utils.get_model_from_layers(layers, input_shape=(None, ), input_ragged=True, input_dtype=dtypes.int32) model.compile(optimizer="sgd", loss="mse", metrics=["accuracy"], run_eagerly=testing_utils.should_run_eagerly()) output = model.predict(input_data) self.assertAllEqual(output, expected_output)
def test_sparse_input_shape(self): input_data = get_input_dataset( sparse_tensor.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])) expected_output = np.array([[1., 0., 0., 0.], [0., 0., 2., 0.], [0., 0., 0., 0.]]) layers = [ToDense(shape=[3, 4]), Final()] model = testing_utils.get_model_from_layers(layers, input_shape=(None, ), input_sparse=True, input_dtype=dtypes.int32) model.compile(optimizer="sgd", loss="mse", metrics=["accuracy"], run_eagerly=testing_utils.should_run_eagerly()) output = model.predict(input_data) self.assertAllEqual(output, expected_output)
def SKIP_test_ragged_input_with_padding(self): input_data = get_input_dataset( ragged_factory_ops.constant([[[1, 2, 3, 4, 5]], [[2], [3]]])) expected_output = np.array([[[1., 2., 3., 4., 5.], [-1., -1., -1., -1., -1.]], [[2., -1., -1., -1., -1.], [3., -1., -1., -1., -1.]]]) layers = [ToDense(pad_value=-1), Final()] model = testing_utils.get_model_from_layers(layers, input_shape=(None, None), input_ragged=True, input_dtype=dtypes.int32) model.compile(optimizer="sgd", loss="mse", metrics=["accuracy"], run_eagerly=testing_utils.should_run_eagerly(), experimental_run_tf_function=testing_utils. should_run_tf_function()) output = model.predict(input_data) self.assertAllEqual(output, expected_output)
def SKIP_test_sparse_input_with_padding(self): input_data = get_input_dataset( sparse_tensor.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])) expected_output = np.array([[1., -1., -1., -1.], [-1., -1., 2., -1.], [-1., -1., -1., -1.]]) layers = [ToDense(pad_value=-1, trainable=False), Final()] model = testing_utils.get_model_from_layers(layers, input_shape=(None, ), input_sparse=True, input_dtype=dtypes.int32) model.compile(optimizer="sgd", loss="mse", metrics=["accuracy"], run_eagerly=testing_utils.should_run_eagerly(), experimental_run_tf_function=testing_utils. should_run_tf_function()) output = model.predict(input_data) self.assertAllEqual(output, expected_output)
def SKIP_test_ragged_input_RNN_layer(self, layer): input_data = get_input_dataset( ragged_factory_ops.constant([[1, 2, 3, 4, 5], [5, 6]])) layers = [ ToDense(pad_value=7, mask=True), keras.layers.Embedding(8, 16), layer(16), keras.layers.Dense(3, activation="softmax"), keras.layers.Dense(1, activation="sigmoid") ] model = testing_utils.get_model_from_layers(layers, input_shape=(None, ), input_ragged=True, input_dtype=dtypes.int32) model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["accuracy"], run_eagerly=testing_utils.should_run_eagerly()) output = model.predict(input_data) self.assertAllEqual(np.zeros((2, 1)).shape, output.shape)