我们有tfrecord文件,其中每个tfrecord文件都包含一个示例,但其中的功能包含一个值列表。我们正在使用tf。数据数据集
以以下方式:
n_rows_per_record_file = 100
def parse_tfrecord_to_example(record_bytes):
col_map = {
"my_col": tf.io.FixedLenFeature(
shape=n_rows_per_record_file, dtype=tf.int64
)}
ds = (
tf.data.TFRecordDataset(file_paths)
.map(parse_tfrecord_to_example)
)
我们希望查找给定文件路径的行数,而不是对n_rows_per_record_file
使用固定常量。
关于如何实现这一点有什么想法吗?
我们试着用这样的东西
def get_shape(filepath):
return filepath, shapes[filepath]
ds = (
tf.data.list_files(file_paths)
.map(get_shape)
.map(
lambda f, shape: tf.data.TFRecordDataset(f).map(
lambda shape: parse_tfrecord_to_example(shape)
)
)
但这失败了,因为tf。直到需要时,数据才会急切地评估文件路径(即,它仍然是一个tf.Tensor)
您提出的解决方案看起来不错,是的,您的文件路径将是一个张量,但在您的情况下,您不能使用一些外部python对象,如shapes
。如果您使用tf。Data
不幸的是,您需要学习许多Tensorflow特定的函数来完成“基本”python任务。例如,在您的情况下,可能需要拆分文件名,然后将字符串转换为int
。是的,一切都是张量。
你在评论中也提到了广播<代码>tf。数据不用于广播<代码>tf。数据用于逐个记录快速加载内存中的数据。所以,无论何时,只要你想应用矢量化或广播,你就应该使用其他东西。第一个选项是,在将数据保存到TFRecords
之前,使用您想要的任何工具准备数据:pandas、dask、spark等。第二个选项是,使用一种tf查找实现动态丰富数据。例如,如果您有一个带有形状的字典,并且希望根据某个类别或id将此功能添加到每个记录中,请将该数据加载到StaticHashTable
并添加预处理查找步骤。注意:这些丰富的数据必须非常小,因为您必须在内存中,如果您使用GPU,甚至可能是GPU内存。
下面是一个查找表的示例:
dataset = tf.data.Dataset.from_tensor_slices([range(10)])
keys_tensor = tf.constant(range(10))
vals_tensor = tf.constant(range(100, 110))
lookup = tf.lookup.StaticHashTable(
tf.lookup.KeyValueTensorInitializer(keys_tensor, vals_tensor), default_value=-1)
def map_numbers(v):
return lookup[v]
for element in dataset.map(map_numbers):
print(element)
tf.Tensor([100 101 102 103 104 105 106 107 108 109], shape=(10,), dtype=int32)
问题内容: 我需要使用jquery动态地将数据传递到我的选择列表。我在控制台中看到了该数据,但列表为空。您能帮我找到解决方案吗? 我的选择清单 问题答案: 将您的JavaScript代码更改为此
我尝试使用以下代码来完成此操作: 我得到以下输出: sim(测试,“测试”)
问题内容: 我是Spring的新手。 这是bean注册的代码: 这是我的bean类: 这是我执行操作的主要方法: 现在,我想用参数调用此构造函数,并且这些参数是在我的主要方法中动态生成的。这就是我想动态传递- 而不是像文件中声明的那样静态传递的意思。 问题答案: 请看一下构造函数注入。 此外,请查看IntializingBean和BeanPostProcessor,以了解Springbean的其他
我不熟悉Spring。 这是bean注册的代码: 这是我的豆子课: 这是我执行动作的主要方法: 现在我想用参数调用这个构造函数,这些参数是在我的主要方法中动态生成的。这就是我想动态传递的意思——而不是静态传递,就像我的文件中声明的那样。
nuxtjs 我要这样传递动态参数 http://localhost:3000/product/app/1 http://localhost:3000/product/app/2 http://localhost:3000/product/app/3 发现生成了很多文件,但大家都知道json是动态的 如何解决?
使用角(5)我显示电子邮件的列表 我的问题是在“名称”属性中。我希望索引“i”作为一个数字传递,尽管它传递i本身(字母)。正确传递索引的方法是什么? 我尝试了这样的东西: 但显然没有成功。 任何帮助都是受欢迎的。