问题标签 [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.

0 投票
0 回答
31 浏览

python - 为tensorflow keras准备数据?

我是 Python 新手,现在正在使用 TensorFlow Keras 实现(逐行编码)深度神经网络(CNN、LSTM)模型。我将数据导入 NumPy 数组,然后将其分成训练、验证和测试子集。之后,我对所有数据进行了分段,如下所示:segments with the shape of (50, 30, 20)labels with the shape of (50,). 段是一个 NumPy 列表,在每个索引上,我都有一个30 * 20的矩阵,我将把它提供给一个带有单个标签的深度模型。

我现在需要将数据分批,并将单个int标签值更改为热编码向量,然后我会去训练。目前我不确定如何为深度模型进一步准备这些数据。TensorFlow 框架tf. data.Dataset是一种可能。您可以通过访问此页面了解有关数据集框架的更多信息。有没有其他有效和直接的方法来进一步准备数据?

0 投票
0 回答
68 浏览

tensorflow - 使用 tensorflow.data.TextLineDataset 解析和过滤读取文本文件

我正在尝试使用以下内容读取数据文件:

tf.tensor([[B'12.011000000000'B'12.011000000000'B'12.0110000000'B'12.0110000000'B'3.000000000000'B'3.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来'25.030000000000' b':' b'0.000' b'7.250' b'0.000' b'0.000'], shape=(17,), dtype=string)

数据文件包含用“:”分隔的特征向量和相应的值。我喜欢将文本解析为浮点数并在中心过滤冒号“:”。我试图映射以拆分文本,它似乎正在工作。但是我不知道如何将值转换为数字并从此处的 x 值中过滤冒号。

0 投票
1 回答
123 浏览

tensorflow - 批量大小未传递给 tf.keras 模型:“检查输入时出错:预期 input1 有 3 个维度,但得到的数组形状为 (a,b)”

我是 tensorflow (v 2.4.1) 的新手,所以这可能很简单,但我自己无法弄清楚。我通过 tf.data.Dataset 将二维 (30,1024) 张量传递给我的 2 输入tf.keras模型。批处理后,数据集打印为

模型的相关部分是:

但是,当我调用 model.fit() 时,我收到错误警告“检查输入时出错:预期的 sentence1 有 3 个维度,但得到了形状为 (30, 1024) 的数组”。也就是说,批量大小不会传递给模型。

我尝试将张量重塑为 (1,30,1024)。然后数据集变为

但是,现在我收到错误“检查输入时出错:预期的 sentence1 有 3 个维度,但得到了形状为 (None, 1, 30, 1024) 的数组”。所以现在批量大小突然传递给模型。知道为什么会这样吗?太感谢了。

编辑:我认为问题首先是由于数据集的生成方式造成的。我通过这些辅助函数从 TFRecord 文件中获得它:

0 投票
0 回答
133 浏览

python - 从复值图像的 tf.data.Dataset 中删除平均图像

我有一个名为 train_dataset 的 tf.data.Dataset -

也就是说,我的批量大小是 100,输入图像是 128*128 大小的复值图像,因此第一个通道代表输入图像的实部,第二个通道代表虚部。目标图像为灰度图像,即单通道图像。

为了预处理数据集,我需要找到批次的平均图像并将其从批次中的每个图像中减去(注意在我的输入图像中,每个图像都有两个通道并且形状为 (128,128,2))。

我尝试 tf.data.Dataset.reduce() 如下找到输入图像的平均值 -

但它给出了以下错误 -

任何帮助调试错误或计算数据集平均值的任何其他建议都将受到高度赞赏。


根据@HakanAkgun 在评论中的建议,我尝试在 py_function 中使用 np.mean() (后跟另一个 py_function 线性缩放到 (0,1) 范围),但 py_functions 似乎不会影响数据集值一点也不。我希望第二个打印语句给出不同的最小值,第三个打印语句打印一个 0 最小值,但最小值似乎根本没有改变。

0 投票
1 回答
193 浏览

python - 规范化 tf.data.Dataset

我有一个tf.data.Dataset具有输入形状(批量大小,128、128、2)和目标形状(批量大小,128、128、1)的图像,其中输入是 2 通道图像(复值图像,两个通道表示实部和虚部),目标是 1 通道图像(实值图像)。我需要通过首先从它们中删除它们的平均图像然后将它们缩放到(0,1)范围来规范化输入和目标图像。如果我没记错的话,tf.data.Dataset一次只能处理一个批次,而不是整个数据集。所以我从批次中的每个图像中删除批次的平均图像,remove_mean py_function然后通过减去它的最小值并除以它的最大值和最小值之差将每个图像缩放到 (0,1)py_function linear_scaling. 但是在应用函数之前和之后从数据集中打印输入图像中的最小值和最大值之后,图像值没有变化。谁能建议这可能出了什么问题?

0 投票
1 回答
357 浏览

tensorflow - 如何处理 TensorFlow 中的分类标签?

如何在 TensorFlow 中进行原生转换(例如 one-hot 编码、索引、分桶、嵌入等)标签?tf.feature_column是特征的首选方式,但标签(即目标)呢?这些也可能经常需要进行转换,并将其视为整个 Keras 管道中的一个层。问题是tf.feature_column它只作用于特征,而不是标签。

例如考虑一个 CSV

其中F1F2是特征和T目标。然后我自然会打电话make_csv_dataset(..., label_name='T')来生成我的数据集。但是,我如何转换目标,以便所有数据处理都整齐地包裹在一个Dense层中?

TensorFlow的团队是否tf.data忽略了标签通常是分类的,因此需要转换的事实?

编辑:我想避免使用熊猫,因为它不可扩展,因此我强调tf.data(例如,make_csv_dataset()或其他)的“本机”工具。

0 投票
0 回答
13 浏览

tensorflow2.0 - 如何使用 tf.data 同时预处理整个批次?(尤其是在多 GPU 分布式训练中)

我有一个加载图像的 tf.data 管道,目前我在 tf.data.Dataset 上使用单个 GPU 时通过获取单个批次来调整整个批次的大小。但是,我希望在分布式培训中做到这一点,我该怎么做?tf.data.Dataset 映射函数采用单个图像进行预处理,但是我希望做的是在批处理级别执行此操作。

0 投票
1 回答
34 浏览

python - Fashion Mnist TensorFlow 数据形状不兼容

我知道有类似的问题。尽管我已经检查过它们,但我没有解决我的问题。

我试图在时尚 Mnist 数据集上实现小批量。因此,我将数据集从 np.array 转换为张量,tf.data.Dataset.from_tensor_slices但我无法解决数据形状不兼容的问题。这是我的代码:

加载数据中

转换为 tf.Dataset:

我的模型

但这给了我这个错误:

我使用以下代码检查了输入形状:(输出为 [28, 28])

我该如何解决这个问题,如果你能帮助我,我将不胜感激。

谢谢!

0 投票
0 回答
39 浏览

python - 使用 tf.data 创建 TensorFlow 输入管道时出错

我有以下代码:

我收到以下错误:

我该如何解决这个问题

0 投票
1 回答
1107 浏览

python - 如何在 tensorflow 中使用 tf.data 读取 .csv 文件?

我有三个不同的 .csv 数据集,我通常使用 pandas 读取并训练深度学习模型。每个数据都是一个 m 矩阵,其中 n 是样本数,m 是特征数。读取数据后,我进行了一些重塑,然后使用以下方法将它们提供给我的深度学习模型feed_dict

但是我的数据现在太大而无法放入内存,我想知道如何使用 tf.data 而不是使用 pandas 来读取数据。抱歉,如果我提供的脚本是伪代码而不是我的实际代码。