Python 如何使用实验性的保存和加载方法保存和使用Tensorflow数据集?
我编写了两个python文件create_save.py和load_use.py,如下所示。 create_save.py运行良好,正在保存tf数据集 但是load_use.py给出的错误如下所示。 如何修复load_use.py错误 创建_save.pyPython 如何使用实验性的保存和加载方法保存和使用Tensorflow数据集?,python,tensorflow,tensorflow-datasets,Python,Tensorflow,Tensorflow Datasets,我编写了两个python文件create_save.py和load_use.py,如下所示。 create_save.py运行良好,正在保存tf数据集 但是load_use.py给出的错误如下所示。 如何修复load_use.py错误 创建_save.py import os import numpy as np import pandas as pd import tensorflow as tf from tensorflow.data.experimental import save as
import os
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.data.experimental import save as tf_save
ds_dir = os.path.join('./', "save_load_tfds_dir")
ds = tf.data.Dataset.range(12)
tf_save(ds, ds_dir)
load_use.py
import os
import numpy as np
import pandas as pd
import tensorflow as tf
ds_dir = os.path.join('./', "save_load_tfds_dir")
new_ds = tf.data.experimental.load(ds_dir)
for elem in new_ds:
print(elem)
上述load_use.py程序出现以下错误:
TypeError回溯(最近一次调用上次)
在里面
---->1新的ds=tf.data.experimental.load(ds\u dir)
TypeError:load()缺少1个必需的位置参数:
“元素规格”
如何修复上述错误?要加载以前保存的数据集,需要指定元素规格参数——保存的数据集元素的类型签名,可以通过tf.data.dataset.element规格获得。此要求存在,以便加载的数据集的形状推断不需要执行I/O
import tempfile
path = os.path.join(tempfile.gettempdir(), "saved_data")
# Save a dataset
dataset = tf.data.Dataset.range(2)
tf.data.experimental.save(dataset, path)
new_dataset = tf.data.experimental.load(path,
tf.TensorSpec(shape=(), dtype=tf.int64)) # element_spec arg
for elem in new_dataset:
print(elem)
创建tf.data.Dataset
时,它具有属性element\u spec
,这是加载保存的文件时应该使用的属性。(请参阅:)
在上面的示例中,load()
方法中的element\u spec
参数是根据保存在代码中的数据的类型规范给出的
非常感谢您的快速回答。对于实际程序,元素规格很大。在create_save.py中是否有自动保存TensorSpec值的方法?是否有自动获取元素规范的方法?保存的数据集元素的类型签名,可通过tf.data.dataset.element_spec获得。如何将TensorSpec tf.TensorSpec(shape=(),dtype=tf.int64)element_spec转换为字符串?以及如何将字符串“tf.TensorSpec(shape=(),dtype=tf.int64)”转换为TensorSpec元素规范?TensorSpec可以被认为是正在加载的数据的签名。其思想是,当您提供此张量规格信息时,
load
方法将知道如何加载。我建议您查看更多保存数据集的方法,而不是使用实验版本谢谢mb0850。我将查看您提供的链接。