From 0c4541359b69bb64bfa405c9b22c8aaff9d33253 Mon Sep 17 00:00:00 2001 From: d61h6k4 Date: Tue, 28 Feb 2023 11:14:54 +0100 Subject: [PATCH] Set dtype=object to create numpy array In order to create an array from list of inhomogeneus objects explicitly dtype to object Since numpy 1.24 numpy raises ValueError when creating Ragged array https://github.com/numpy/numpy/pull/22004 --- pyproject.toml | 2 +- rasa/utils/tensorflow/model_data.py | 2 +- rasa/utils/tensorflow/model_data_utils.py | 8 ++++---- tests/utils/tensorflow/conftest.py | 18 ++++++++++++------ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 00d20917b92b..58a13f292f2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -139,7 +139,7 @@ version = ">=1.19.2,<1.22.0" python = "~=3.7.0" [[tool.poetry.dependencies.numpy]] -version = ">=1.19.2,<1.24.0" +version = ">=1.19.2,<1.25.0" python = ">=3.8,<3.11" [[tool.poetry.dependencies.scipy]] diff --git a/rasa/utils/tensorflow/model_data.py b/rasa/utils/tensorflow/model_data.py index b56acc3601f5..089283d9fa7d 100644 --- a/rasa/utils/tensorflow/model_data.py +++ b/rasa/utils/tensorflow/model_data.py @@ -771,7 +771,7 @@ def balanced_data(self, data: Data, batch_size: int, shuffle: bool) -> Data: for f in features: final_data[key][sub_key].append( FeatureArray( - np.concatenate(np.array(f)), + np.concatenate(np.array(f, dtype=object)), number_of_dimensions=f[0].number_of_dimensions, ) ) diff --git a/rasa/utils/tensorflow/model_data_utils.py b/rasa/utils/tensorflow/model_data_utils.py index cfca7940e1a0..0610734870b8 100644 --- a/rasa/utils/tensorflow/model_data_utils.py +++ b/rasa/utils/tensorflow/model_data_utils.py @@ -385,19 +385,19 @@ def _feature_arrays_for_attribute( for key, values in _sparse_features.items(): if consider_dialogue_dimension: sparse_features[key] = FeatureArray( - np.array(values), number_of_dimensions=4 + np.array(values, dtype=object), number_of_dimensions=4 ) else: sparse_features[key] = FeatureArray( - np.array([v[0] for v in values]), number_of_dimensions=3 + np.array([v[0] for v in values], dtype=object), number_of_dimensions=3 ) for key, values in _dense_features.items(): if consider_dialogue_dimension: - dense_features[key] = FeatureArray(np.array(values), number_of_dimensions=4) + dense_features[key] = FeatureArray(np.array(values, dtype=object), number_of_dimensions=4) else: dense_features[key] = FeatureArray( - np.array([v[0] for v in values]), number_of_dimensions=3 + np.array([v[0] for v in values], dtype=object), number_of_dimensions=3 ) attribute_to_feature_arrays = { diff --git a/tests/utils/tensorflow/conftest.py b/tests/utils/tensorflow/conftest.py index b331e98ac9a4..476b5e6e5709 100644 --- a/tests/utils/tensorflow/conftest.py +++ b/tests/utils/tensorflow/conftest.py @@ -21,7 +21,8 @@ async def model_data() -> RasaModelData: np.random.rand(3, 14), np.random.rand(1, 14), np.random.rand(3, 14), - ] + ], + dtype=object, ), number_of_dimensions=3, ), @@ -43,7 +44,8 @@ async def model_data() -> RasaModelData: scipy.sparse.csr_matrix( np.random.randint(5, size=(3, 10)) ), - ] + ], + dtype=object, ), number_of_dimensions=3, ), @@ -106,7 +108,8 @@ async def model_data() -> RasaModelData: np.random.randint(5, size=(7, 10)) ), ], - ] + ], + dtype=object, ), number_of_dimensions=4, ), @@ -132,7 +135,8 @@ async def model_data() -> RasaModelData: np.random.rand(1, 14), np.random.rand(7, 14), ], - ] + ], + dtype=object, ), number_of_dimensions=4, ), @@ -148,7 +152,8 @@ async def model_data() -> RasaModelData: np.random.randint(2, size=(3, 10)), np.random.randint(2, size=(1, 10)), np.random.randint(2, size=(3, 10)), - ] + ], + dtype=object, ), number_of_dimensions=3, ) @@ -167,7 +172,8 @@ async def model_data() -> RasaModelData: np.array([[0], [1], [1]]), np.array([[0], [1]]), np.array([[0], [0], [0]]), - ] + ], + dtype=object, ), number_of_dimensions=3, )