tf.raw_ops.BatchDataset,类型变体的张量

问题描述

我正在尝试将 Pandas 数据帧转换为 TF 记录, 我使用以下数据将我的 Pandas 数据帧转换为 TF 数据集,train_xval_xtest_x 是我的训练、验证和测试数据,都是 Pandas 数据帧,train_y,val_y,test_y标签。它们都是时间序列数据。

shift_window_size = 125
window_size = 250

# sliding window
train_ds = tf.data.Dataset.from_tensor_slices((train_x,train_y)).window(size=window_size,shift=shift_window_size,drop_remainder=True)
val_ds = tf.data.Dataset.from_tensor_slices((val_x,val_y)).window(size=window_size,drop_remainder=True)
test_ds = tf.data.Dataset.from_tensor_slices((test_x,test_y)).window(size=window_size,drop_remainder=True)

# use flat_map to match feature and label 
train_ds = train_ds.flat_map(lambda feature,label: tf.data.Dataset.zip((feature,label))).batch(window_size,drop_remainder=True)
val_ds = val_ds.flat_map(lambda feature,drop_remainder=True)
test_ds = test_ds.flat_map(lambda feature,drop_remainder=True)

然后使用 print(train_ds),我得到了,<BatchDataset shapes: ((250,6),(250,1)),types: (tf.float64,tf.int64)>

然后我尝试通过使用将我的值转换为字节,

def _bytes_feature(value):
  """Returns a bytes_list from a string / byte."""
  if isinstance(value,type(tf.constant(0))):
    value = value.numpy() # BytesList won't unpack a string from an EagerTensor.
  return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

当我使用 print(_byte_feature(train_ds)) 时,出现类型错误

TypeError: Failed to convert object of type <class 'tensorflow.python.data.ops.dataset_ops._BatchDataset'> to Tensor. Contents: <BatchDataset shapes: ((250,tf.int64)>. Consider casting elements to a supported type.

显示

<_VariantDataset shapes: ((250,tf.int64)>

我还使用 value = tf.io.serialize_tensor(value) 将我的数据集转换为张量,但它也显示错误

TypeError: Failed to convert object of type <class 'tensorflow.python.data.ops.dataset_ops._VariantDataset'> to Tensor. Contents: <_VariantDataset shapes: ((250,tf.int64)>. Consider casting elements to a supported type.

不知道哪个部分出了问题,所以我必须在这里寻求帮助。

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)