问题描述
我正在尝试将 Pandas 数据帧转换为 TF 记录,
我使用以下数据将我的 Pandas 数据帧转换为 TF 数据集,train_x
、val_x
、test_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 (将#修改为@)