将二维 numpy 数组转换为 Tensorflow 数据集
Convert 2D numpy array to Tensorflow Dataset
我有一个形状为 (n, 12) 的 numpy 数组,表示我的数据的输入数据点,浮点形式,还有一个形状为 (n,) 的 numpy 数组,其中包含数据点的标签(整数) .
但是,我无法弄清楚如何将其转换为 tensorflow 数据集 - 指南方法会引发错误:
有问题的代码行 dataset= tf.data.Dataset.from_tensor_slices((features, labels))
给出错误 TypeError: Expected binary or unicode string, got Decimal('0.4367')
谢谢
您的输入数组之一似乎包含 decimal.Decimal
类型的元素。 TensorFlow 本身不支持这种类型,因此您必须将数组转换为 np.float32
或 np.float64
。
例如,假设 features
是包含 Decimal
个值的数组,您可以将其转换为:
import numpy as np
features = np.array([decimal.Decimal(1.0), decimal.Decimal(2.0), decimal.Decimal(3.0)])
print(features) # ==> "[Decimal('1') Decimal('2') Decimal('3')]"
print(features.dtype) # ==> "object"
features = features.astype(np.float32)
print(features) # ==> "[1. 2. 3. 4.]"
print(features.dtype) # ==> "float32"
我有一个形状为 (n, 12) 的 numpy 数组,表示我的数据的输入数据点,浮点形式,还有一个形状为 (n,) 的 numpy 数组,其中包含数据点的标签(整数) .
但是,我无法弄清楚如何将其转换为 tensorflow 数据集 - 指南方法会引发错误:
有问题的代码行 dataset= tf.data.Dataset.from_tensor_slices((features, labels))
给出错误 TypeError: Expected binary or unicode string, got Decimal('0.4367')
谢谢
您的输入数组之一似乎包含 decimal.Decimal
类型的元素。 TensorFlow 本身不支持这种类型,因此您必须将数组转换为 np.float32
或 np.float64
。
例如,假设 features
是包含 Decimal
个值的数组,您可以将其转换为:
import numpy as np
features = np.array([decimal.Decimal(1.0), decimal.Decimal(2.0), decimal.Decimal(3.0)])
print(features) # ==> "[Decimal('1') Decimal('2') Decimal('3')]"
print(features.dtype) # ==> "object"
features = features.astype(np.float32)
print(features) # ==> "[1. 2. 3. 4.]"
print(features.dtype) # ==> "float32"