将具有多种数据类型的python序列转换为张量

Mic*_*ael 4 types tuples python-3.x tensorflow

我正在使用TensorFlow r1.7和python3.6.5。我也是TensorFlow的新手,因此,如果可能的话,我想简单阅读说明。

我正在尝试使用此功能将输入数据转换为张量数据集tf.data.Dataset.from_tensor_slices()。我将带有混合数据类型的元组传递给此函数。但是,在运行代码时出现此错误:ValueError: Can't convert Python sequence with mixed types to Tensor

我想知道为什么会收到此错误,以及如何将数据转换为具有混合数据类型的张量数据集。

这是我的元组中前5个条目的打印输出。

(13501, 2, None, 51, '2232', 'S35', '734.72', 'CLA', '240', 1035, 2060, 1252, 1182, 10, '967.28', '338.50', None, 14, 102, 3830)
(15124, 2, None, 57, '2641', 'S35', '234.80', 'DDA', '240', 743, 1597, 4706, 156, 0, None, None, None, 3, 27, 981)
(40035, 2, None, None, '21', 'K00', '60.06', 'CHK', '520', 76, 1863, 12, None, 1, '85.06', '25.00', None, 1, 5, 245)
(42331, 3, None, 62, '121', 'S50', '1859.01', 'ACT', '420', 952, 1583, 410, 255, 0, None, None, None, 6, 117, 1795)
(201721, 3, None, 42, '2472', 'S35', '1413.84', 'CLA', '350', 868, 1746, 963, 264, 0, None, None, None, 18, 65, 4510)
Run Code Online (Sandbox Code Playgroud)

如您所见,我在输入数据中混合了整数,浮点数和字符串。

这是错误的回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/miikey101/Documents/Khalen_Case_Loader/tensorflow/k_means/k_means.py", line 10, in prepare_dataset
    dataset = tf.data.Dataset.from_tensor_slices(dm_data)
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 222, in from_tensor_slices
    return TensorSliceDataset(tensors)
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1017, in __init__
    for i, t in enumerate(nest.flatten(tensors))
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1017, in <listcomp>
    for i, t in enumerate(nest.flatten(tensors))
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 950, in convert_to_tensor
    as_ref=False)
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1040, in internal_convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 235, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 185, in constant
    t = convert_to_eager_tensor(value, ctx, dtype)
  File "/usr/local/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 131, in convert_to_eager_tensor
    return ops.EagerTensor(value, context=handle, device=device, dtype=dtype)
ValueError: Can't convert Python sequence with mixed types to Tensor.
Run Code Online (Sandbox Code Playgroud)

nes*_*uno 5

在tensorflow中,您不能使用具有多个数据类型的张量。

引用文档

一个tf.Tensor不能有多个数据类型。但是,可以将任意数据结构序列化为字符串并将其存储在tf.Tensors中。

因此,一种解决方法是创建具有数据类型的张量tf.String,然后在出现时将字段强制转换为所需的数据类型