Esempio n. 1
0
    def testMergeTensorValuesSparseOriginalsUnmodified(self):
        value1 = tf.compat.v1.SparseTensorValue(
            indices=np.array([]).reshape([0, 2]),
            values=np.array([]).reshape([0, 1]),
            dense_shape=np.array([1, 4]))
        value2 = tf.compat.v1.SparseTensorValue(
            indices=np.array([]).reshape([0, 2]),
            values=np.array([]).reshape([0, 1]),
            dense_shape=np.array([1, 4]))
        merged_tensor_values = util.merge_tensor_values(
            tensor_values=[value1, value2])

        # Check that the original SparseTensorValues were not mutated.
        self.assertSparseTensorValueEqual(
            tf.compat.v1.SparseTensorValue(indices=np.array([]).reshape([0,
                                                                         2]),
                                           values=np.array([]).reshape([0, 1]),
                                           dense_shape=np.array([1, 4])),
            value1)
        self.assertSparseTensorValueEqual(
            tf.compat.v1.SparseTensorValue(indices=np.array([]).reshape([0,
                                                                         2]),
                                           values=np.array([]).reshape([0, 1]),
                                           dense_shape=np.array([1, 4])),
            value2)

        # Check the merged SparseTensorValue.
        self.assertSparseTensorValueEqual(
            tf.compat.v1.SparseTensorValue(indices=np.array([]).reshape([0,
                                                                         2]),
                                           values=np.array([]).reshape([0, 1]),
                                           dense_shape=np.array([2, 4])),
            merged_tensor_values)
Esempio n. 2
0
 def testMergeTensorValueDense(self):
     merged_tensor_values = util.merge_tensor_values(tensor_values=[
         np.ndarray(shape=(1, 2), buffer=np.array([1, 2])),
         np.ndarray(shape=(1, 2), buffer=np.array([3, 4])),
         np.ndarray(shape=(1, 2), buffer=np.array([5, 6])),
     ])
     self.assertAllEqual(
         np.ndarray(shape=(3, 2), buffer=np.array([1, 2, 3, 4, 5, 6])),
         merged_tensor_values)
Esempio n. 3
0
 def _create_feed_for_features_predictions_labels_list(
         self, features_predictions_labels_list):
     """Create feed list for feeding a list of features, predictions, labels."""
     result = []
     for which_map, key, _ in self._iterate_fpl_maps_in_canonical_order():
         result.append(
             util.merge_tensor_values([
                 getattr(fpl, which_map)[key][encoding.NODE_SUFFIX]
                 for fpl in features_predictions_labels_list
             ]))
     return result
Esempio n. 4
0
 def _create_feed_for_features_predictions_labels_list(
         self, features_predictions_labels_list):
     """Create feed dict for feeding a list of features, predictions, labels."""
     result = {}
     for label_key, label_dict in self._labels_map.items():
         result[label_dict[
             encoding.NODE_SUFFIX]] = util.merge_tensor_values([
                 fpl.labels[label_key][encoding.NODE_SUFFIX]
                 for fpl in features_predictions_labels_list
             ])
     for feature_key, feature_dict in self._features_map.items():
         result[feature_dict[
             encoding.NODE_SUFFIX]] = util.merge_tensor_values([
                 fpl.features[feature_key][encoding.NODE_SUFFIX]
                 for fpl in features_predictions_labels_list
             ])
     for prediction_key, prediction_dict in self._predictions_map.items():
         result[prediction_dict[encoding.NODE_SUFFIX]] = (
             util.merge_tensor_values([
                 fpl.predictions[prediction_key][encoding.NODE_SUFFIX]
                 for fpl in features_predictions_labels_list
             ]))
     return result
Esempio n. 5
0
 def testMergeTensorValueDenseDifferentShapesStrings(self):
     merged_tensor_values = util.merge_tensor_values(tensor_values=[
         np.array([[['apple'], ['banana']]]),
         np.array([[['cherry', 'date', 'elderberry']]]),
         np.array([[['fig', 'guava'], ['honeydew', 'imbe'],
                    ['jackfruit', 'kiwi']]])
     ])
     self.assertAllEqual(
         np.array([
             # Row 0
             [['apple', '', ''], ['banana', '', ''], ['', '', '']],
             # Row 1
             [['cherry', 'date', 'elderberry'], ['', '', ''], ['', '', '']],
             # Row 2
             [['fig', 'guava', ''], ['honeydew', 'imbe', ''],
              ['jackfruit', 'kiwi', '']]
         ]),
         merged_tensor_values)
Esempio n. 6
0
 def testMergeTensorValueSparse(self):
     merged_tensor_values = util.merge_tensor_values(tensor_values=[
         tf.SparseTensorValue(indices=np.array([[0, 0], [0, 1]]),
                              values=np.array([1, 2]),
                              dense_shape=np.array([1, 2])),
         tf.SparseTensorValue(indices=np.array([[0, 0], [0, 1]]),
                              values=np.array([3, 4]),
                              dense_shape=np.array([1, 2])),
         tf.SparseTensorValue(indices=np.array([[0, 0], [0, 1]]),
                              values=np.array([5, 6]),
                              dense_shape=np.array([1, 2])),
     ])
     self.assertSparseTensorValueEqual(
         tf.SparseTensorValue(indices=np.array([[0, 0], [0, 1], [1, 0],
                                                [1, 1], [2, 0], [2, 1]]),
                              values=np.array([1, 2, 3, 4, 5, 6]),
                              dense_shape=np.array([3, 2])),
         merged_tensor_values)
    def _create_feed_for_features_predictions_labels_list(
            self, features_predictions_labels_list):
        """Create feed list for a list of FeaturesPredictionsLabels."""

        # Feed in the tensors in the following order:
        # Features -> Predictions -> Labels and using the standard key ordering
        # within each bucket. This should match the placeholder definitions when
        # generating the graph.
        # Note that we need to merge all examples into one Tensor before feeding.
        tensor_feed = []

        for which_map, key, _ in self._iterate_fpl_maps_in_canonical_order():
            tensor_feed.append(
                util.merge_tensor_values([
                    getattr(fpl, which_map)[key][encoding.NODE_SUFFIX]
                    for fpl in features_predictions_labels_list  # pytype: disable=wrong-arg-types
                ]))

        return tensor_feed
Esempio n. 8
0
 def testMergeTensorValueDenseDifferentShapesInts(self):
     merged_tensor_values = util.merge_tensor_values(tensor_values=[
         np.array([[[10], [11]]]),
         np.array([[[20, 21, 22]]]),
         np.array([[[30, 31], [32, 33], [34, 35]]]),
         np.array([[[40, 41]]]),
     ])
     self.assertAllEqual(
         np.array([
             # Row 0
             [[10, 0, 0], [11, 0, 0], [0, 0, 0]],
             # Row 1
             [[20, 21, 22], [0, 0, 0], [0, 0, 0]],
             # Row 2
             [[30, 31, 0], [32, 33, 0], [34, 35, 0]],
             # Row 3
             [[40, 41, 0], [0, 0, 0], [0, 0, 0]],
         ]),
         merged_tensor_values)
Esempio n. 9
0
    def testMergeTensorValueSparseDifferentShapes(self):
        merged_tensor_values = util.merge_tensor_values(tensor_values=[
            tf.SparseTensorValue(indices=np.array([[0, 0, 0], [0, 1, 1]]),
                                 values=np.array([10, 12]),
                                 dense_shape=np.array([1, 2, 2])),
            tf.SparseTensorValue(indices=np.array([[0, 2, 2]]),
                                 values=np.array([22]),
                                 dense_shape=np.array([1, 3, 3])),
            tf.SparseTensorValue(indices=np.array([[0, 0, 4]]),
                                 values=np.array([33]),
                                 dense_shape=np.array([1, 1, 5]))
        ])

        self.assertSparseTensorValueEqual(
            tf.SparseTensorValue(indices=np.array([[0, 0, 0], [0, 1, 1],
                                                   [1, 2, 2], [2, 0, 4]]),
                                 values=np.array([10, 12, 22, 33]),
                                 dense_shape=np.array([3, 3, 5])),
            merged_tensor_values)