python - Tensorflow - 如何创建一个元组数组的数据集
问题描述
问题
数据集可以是具有不同类型的元组的集合。我可以从元组创建数据集。
tf.data.Dataset.from_tensors(
([1, 2, 3], 'A')
)
-----
<TensorDataset shapes: ((3,), ()), types: (tf.int32, tf.string)>
如何从元组数组创建数据集?
tf.data.Dataset.from_tensors(
[
([1, 2, 3], 'A'),
([4, 5, 6], 'B')
]
)
----
ValueError: Can't convert non-rectangular Python sequence to Tensor.
Tensorflow Dataset IMDB review dataset是一个不同类型元组数组的例子,所以应该有办法。
import numpy as np
import tensorflow as tf
import tensorflow_datasets as tfds
imdb, info = tfds.load("imdb_reviews", with_info=True, as_supervised=True)
train_data, test_data = imdb['train'], imdb['test']
print(train_data.take(2))
for text, label in train_data.take(2).as_numpy_iterator():
print("{}, {}".format(text[0:64], label))
----
<TakeDataset shapes: ((), ()), types: (tf.string, tf.int64)>
b'Being a fan of silent films, I looked forward to seeing this pic', 0
b"I haven't seen this film in years so my knowledge is a little ru", 1
解决方案
它适用于 IMDB 数据集,因为它们是独立的特征。如果特征是分开的,即作为多输入,您的示例也将起作用。
import numpy as np
import tensorflow as tf
input_1 = np.array(([1, 2, 3], [4, 5, 6]))
input_2 = np.array((['A'], ['B']))
tf.data.Dataset.from_tensor_slices((input_1, input_2))
<TensorSliceDataset shapes: ((3,), (1,)), types: (tf.int32, tf.string)>
例如:
ds = tf.data.Dataset.from_tensor_slices((input_1, input_2))
next(iter(ds))
(<tf.Tensor: shape=(3,), dtype=int32, numpy=array([1, 2, 3])>,
<tf.Tensor: shape=(1,), dtype=string, numpy=array([b'A'], dtype=object)>)
推荐阅读
- python - 如何向 discord.py 中已删除的成员发送消息?
- terraform - 如何使用 Terraform >= 0.12 在资源块中包含/排除可选属性
- python-3.x - Pycharm Mac,语句结束
- logstash - Filebeat 注册表 data.json 为空
- oracle-apex - ORA-20000: 找不到 AOP 服务器。检查它是否在 http://api.apexofficeprint.com/ 上运行
- python - 混合密度网络 (MDN) 仅返回概率 1.0 和 0.0
- reactjs - React 开发工具 - 停用“警告中断”
- javascript - 更改要素图层中多边形的顺序?(arcgis js 4.xx)
- php - 用于 PHP 脚本加密狗的 FPGA
- c++ - 我怎样才能跳过一些 GTEST ::testing::Combine 案例?