问题标签 [tf.data.dataset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - 如何在tensorflow数据管道中使用cv2应用函数将路径转换为数组?
任何帮助将不胜感激
我正在尝试加载两个包含图像路径及其相应标签的列表。像这样的东西:
我以下列方式使用了 tf.data:
这将返回:
我的问题是如何应用函数来使用 cv2 将路径转换为数组,因为图像是 .tif 文件?这样结果将是:
我正在使用dataset.map。但是它抛出错误:
这会引发错误:
任何帮助将不胜感激
tensorflow - 使用 tensorflow 制作 discreate 数据集的 .zip
我有两个虚拟图像数据集,第一个数据集中有 3 个元素,第二个数据集中有 6 个元素。
像第一个数据集图像名称 = [1.png, 2.png, 3.png]
第二个数据集图像名称 = [1_1.png, 1_2.png, 2_1.png, 2_2.png, 3_1.png, 3_2.png]
我试图弄清楚,如何以这样的方式对这些数据集进行压缩,以映射这两个数据集,[1.png 必须与 1_1.png 和 1_2.png] 映射,而 [2.png 必须映射与 2_1.png 和 2_2.png] 等等。这可能吗?这是我试图实现的代码,但我真的不知道该怎么做。
代码
结果
我想要的结果
python - CsvDataset 处理大数据需要很长时间
随着我的数据不断增加(目前超过 30GB),并且我无法加载到内存中,我刚刚开始使用数据集(因此我对它比较陌生)。
我有两个 csv 文件,一个带有热编码标签 [0,0,0,0,1,0,0...] 的每一行(labels.csv
),另一个(mixture.csv
)带有实际数据本身。每行长 1901 个浮点数,代表一维数据(如光谱);因此,没有特征列。
传统上,我只是将整个内容读入并存储起来,我这样做了
和类似的东西labels
。然后我会用传统的方法来分离训练、标签和验证,
紧随其后的是重塑,
试图改变我的东西以便它可以工作tf.data
(经过相当多的阅读和搜索),
是的,我知道可能有更好的方法来做 d-type,但我是从这里阅读的,这是我想出的最好的方法。
现在看来,这会将每一列作为一个功能读取,因此为了摆脱它,我遵循了本教程中所做的操作,
并且由于 中的同一行mixture.csv
对应于同一行中的标签labels.csv
,
当我去运行它时,
它比全部加载到内存中花费的时间要长得多(例如 6 分钟与 90 分钟相比)。我知道它会更长,但我没想到会这么糟糕。
有没有更好的方法来做到这一点,或者我正在做一些让事情变得更糟的事情。
python - 使用 tensorflow 加载视频帧的最佳方法
我正在研究一个视频分类问题。数据以每个视频的帧数的形式给出,所以我创建了一个生成器,它采用 dim = (batch_size, #frames, IMG_SIZE, IMG_SIZE, 3) 的视频数组keras.utils.Sequence
我在 Kaggle 笔记本上工作,代码运行良好,然后我在 python 脚本中使用相同的代码在我的机器上运行它,我发现代码没有使用 GPU
我做了一些研究,有些人建议使用tf.data
而不是,keras.utils.Sequence
但我没有找到一种方法来做到这一点
python - 将自定义数据加载到张量流管道中
我正在尝试实现此代码,该代码从
官方 tensorflow 数据集中加载数据,以使其加载放置在我的谷歌驱动器上的数据
我怎样才能让它将我的图像加载到从 A 类和 B 类到我的 train_horses 和 train_zebras 类的类中
它给了我一个错误,它不是可编写脚本的,我可以怎样才能以顶部代码片段中显示的格式加载数据
python - 切片压缩的 tf.data.Dataset
我有两个特征:名字和姓氏。我压缩它们以用作我的模型的多个输入。然后我批处理数据集。
所以我得到的形状:
然后在通话中我想将它们分配给输入:
但是,如果我这样做,我会放弃批处理的概念,因为输入的形状变为 (5,5)
我该如何解决这个问题?
tensorflow - 如何将数据传递给功能 API 模型
我在 PyCharm 中使用 Tensorflow 和 keras 使用功能 api 创建了一个多输入网络。
如何将数据传递给这些模型的一个示例如下:
在上面的示例中,数据被加载为 NumPy 并形成为[val_x1,val_x2]
. 但是由于内存和数据集大小的限制,我必须使用 tf.data 来准备数据集。我的数据集由 2 个类中的图像组成(每个形状都是(5000,20)
。我加载了所有图像。网络输入层是1d-Cnn
每个接受的(5000,1)
。假设我给网络这样的输入:
X
是一个形状为(5000,20)的样本(图像),我必须将其转换为形状为(5000,1)的子样本x1,x2,......,x20,然后调用fit()
方法。
我的问题就在这里。我用tf.data
. 数据集的每个样本都有一个带有类的形状(5000,20)
和标签(2,1)
的图像样本。2
现在我无法将一个 tf 数据样本转换为给出model.fit()
方法的样本列表。
我用谷歌搜索并找到了这个解决方案,但它对我不起作用。
这是我的完整代码:
python - 在执行第一个 epoch 后,Tensorflow 无法将批次附加在一起
compile
在删除步骤的损失函数(将其设置为loss=None
)并添加一个以通过该add_loss
方法添加另一个损失函数后,我的代码遇到了问题。我可以打电话fit
,它训练了一个时代,但后来我得到了这个错误:
我的批量大小是 128。它看起来117
在某种程度上取决于我正在使用的示例数量。当我改变示例的数量时,我会从117
. 它们都是我的示例数量以及我的批量大小。我不知道如何解决这个问题。我tf.data.TFRecordDataset
用作输入。
我有以下简化模型:
tensorflow - tf.data 多输出模型具有形状不兼容的标签
我正在尝试将我前段时间在 Colab(使用 ImageDataGenerator)上所做的工作簿转换为使用 tf.data.dataset 的工作簿,因为我现在设置了多 GPU,并且正在尝试学习如何进行更快的训练。该模型在来自 Kaggle 的年龄/性别/种族数据集上进行训练,但在这种情况下,我们只对性别和年龄预测感兴趣。性别将是 0 或 1,损失函数是二元交叉熵,而年龄是 0 到 120 之间的整数,损失函数是 mse,它是回归。
输出:<BatchDataset 形状:((None, 128, 128, 3), (None, 2)),类型:(tf.float32, tf.int32)>
模型本身:
错误信息:
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0', '/job:localhost/replica:0/task:0/device:GPU:1' ) Epoch 1/100 INFO:tensorflow:Error 报告给 Coordinator:logits 和标签必须具有相同的形状 ((None, 1) vs (None, 2)) Traceback(最近一次调用最后):文件“C:\Users\ mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\ops\nn_impl.py”,第 130 行,在 sigmoid_cross_entropy_with_logits 标签中。get_shape().assert_is_compatible_with(logits.get_shape()) 文件“C:\Users \mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\framework\tensor_shape.py",第 1161 行,在 assert_is_compatible_with 中引发 ValueError("形状 %s 和 %s 不兼容" % (self, other) ) ValueError: 形状 (None, 2) 和 (None, 1) 不兼容
在处理上述异常的过程中,又出现了一个异常:
Traceback(最近一次调用最后一次):文件“C:\Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\training\coordinator.py”,第 297 行,在 stop_on_exception 产量文件“C: \Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\distribute\mirrored_run.py",第 346 行,运行中 self.main_result = self.main_fn(*self.main_args, **self. main_kwargs) 文件“C:\Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\autograph\impl\api.py”,第 692 行,在包装器中返回 convert_call(f, args, kwargs, options=options) 文件“C:\Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\autograph\impl\api.py”,第 382 行,converted_call return _call_unconverted(f, args, kwargs,选项)文件“C:\Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\autograph\impl\api.py”,第 463 行,在 _call_unconverted 返回 f(*args, **kwargs) 文件“C:\ Users\mm\AppData\Roaming\Python\Python39\site-packages\keras\engine\training.py",第 835 行,在 run_step outputs = model.train_step(data) 显示更多(在文本编辑器中打开原始输出数据) ...
文件“C:\Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\util\dispatch.py”,第 206 行,在包装器返回目标(*args,**kwargs)文件“C :\Users\mm\AppData\Roaming\Python\Python39\site-packages\tensorflow\python\ops\nn_impl.py",第 132 行,在 sigmoid_cross_entropy_with_logits 中引发 ValueError("logits 和标签必须具有相同的形状 (%s vs %s)" % ValueError: logits 和标签必须具有相同的形状 ((None, 1) vs (None, 2))
python - TensorFlow 2.6:num_parallel_calls 大于 1 但大部分时间只使用一个 CPU 内核
我写了一个 TF 数据管道,看起来像这样(TF 2.6):
正如您从代码中看到的那样,我使用了 TF 指南中的大部分技巧来正确构建tf.data
管道。我遇到的问题如下:开始训练时,代码没有使用全部4个核心,而是只使用了1个(有时会使用更多核心,但似乎是由train_dist_ds.get_next()
下面代码中的调用引起的)。此外,GPU 几乎没有被使用。分析器说问题出在预处理中,并且tf_data_bottleneck_analysis
表明问题出在ParallelBatch
(尽管一旦他指出ParallelMap
,这似乎是正确的,但这本身并不能说明太多 - 无论如何核心仍然没有得到充分利用)。带有分析器的训练函数如下所示:
正如你所看到的,我没有接触数据集,我没有将它放入任何策略中,它在train_step
(当然是包裹在 中@tf.function
)。问题:有没有办法以某种方式调试图中的计算以进行tf.data
操作?特别是tf.data
在预处理中对每个 API 函数的调用级别——这样我就可以了解要优化什么。只使用一个核心的原因可能是什么?
到目前为止我已经尝试过:
- 将所有可自动调整的参数设置为
tf.data.AUTOTUNE
- 无效; - 仅对数据集对象进行迭代——在这种情况下使用了所有内核,从中我得出结论,问题出在图形执行级别——并行性并未全局关闭;
- 关闭分析器 - 没有效果;
- 降低通话量
parallel_iterations
-map_fn
无效; - 很多奇怪的设置
num_parallel_calls
- 没有影响到它似乎真的无关紧要。