dim*_*n82 8 tensorflow-datasets tensorflow2.0
我有一个生成器函数,可以生成以下元组:yield (transformed_input_array, set_y)
Transformed_input_array是具有以下形状的 ndarray 列表:(1024, 104), (1024, 142), (1024, 1), (1024, 1), (1024, 1), (1024, 1), (1024, 140) 和以下类型:tf.float64、tf.float64、tf.int8、tf.int16、tf.int8、tf.int8、tf.float64 set_y是形状为1024、类型为int64的ndarray
我用 tf.data.Dataset.from_generator 函数包装了生成器,代码如下:
dataset = tf.data.Dataset.from_generator(
generator,
# output_signature=(
# tf.TensorSpec(shape=(), dtype=(tf.float64, tf.float64, tf.int8, tf.int16, tf.int8, tf.int8, tf.float64)),
# tf.TensorSpec(shape=1024, dtype=tf.int64))
output_types=(tf.float64, tf.float64, tf.int8, tf.int16, tf.int8, tf.int8, tf.float64, tf.int64),
output_shapes=((1024, 104), (1024, 142), (1024, 1), (1024, 1), (1024, 1), (1024, 1), (1024, 140), 1024)
)
Run Code Online (Sandbox Code Playgroud)
但是当我运行训练时,出现以下错误:
ValueError: 数据的格式预计为
x,(x,),(x, y), 或(x, y, sample_weight), 发现: (<tf.Tensor 'IteratorGetNext:0' shape=(1024, 104) dtype=float64>, <tf.Tensor 'IteratorGetNext:1' shape=( 1024, 142) dtype=float64>, <tf.Tensor 'IteratorGetNext:2' shape=(1024, 1) dtype=int8>, <tf.Tensor 'IteratorGetNext:3' shape=(1024, 1) dtype=int16 >, <tf.Tensor 'IteratorGetNext:4' shape=(1024, 1) dtype=int8>, <tf.Tensor 'IteratorGetNext:5' shape=(1024, 1) dtype=int8>, <tf.Tensor 'IteratorGetNext :6' 形状=(1024, 140) dtype=float64>, <tf.Tensor 'ExpandDims:0' 形状=(1024, 1) dtype=int64>)
如果我尝试使用 output_signature 参数(注释掉的代码)运行,我会收到以下错误:
类型错误:无法将值(tf.float64、tf.float64、tf.int8、tf.int16、tf.int8、tf.int8、tf.float64)转换为 TensorFlow DType。
有人可以提供一个例子,说明我应该如何处理复杂类型(ndarrays 列表)?在 TF 文档中找不到任何示例。
| 归档时间: |
|
| 查看次数: |
2779 次 |
| 最近记录: |