计算数据集中每个特征的平均值、总数等在Pandas和中似乎相当微不足道Numpy,但我找不到任何类似的简单函数/操作tf.data.Dataset。实际上我发现tf.data.Dataset.reduce它允许我计算 running ,但对于其他操作( 、、等)
sum来说并不那么容易。所以,我的问题是,是否有一种简单的方法来计算 的统计数据?此外,有没有办法标准化/规范化(整个,即不是批量),特别是如果不使用?minmaxstd
tf.data.Datasettf.data.Datasettf.data.Dataset.reduce
所以,我的问题是,是否有一种简单的方法来计算 tf.data.Dataset 的统计数据?
这取决于您想要计算的统计数据。
例如,要计算最小值或最大值,您可以使用:
import numpy as np
import tensorflow as tf
ds = tf.data.Dataset.range(10, output_type=tf.float32) # sample dataset
minimum = ds.reduce(np.Inf, tf.math.minimum) # 0.0
maximum = ds.reduce(-np.Inf, tf.math.maximum) # 9.0
Run Code Online (Sandbox Code Playgroud)
这是因为tf.data.Dataset.reducereduce函数的要求是直接通过最小值和最大值来满足的。
要计算平均值(可能还包括其他统计数据),一种方法是使用Keras 指标。代码变得有点混乱,但它确实达到了目的:
mean = tf.keras.metrics.Mean()
for batch in ds:
mean.update_state(batch)
print(m.result().numpy()) # 7.0
Run Code Online (Sandbox Code Playgroud)
要计算 Keras 中可用的统计数据之外的统计数据,我想您必须编写自己的减速器函数。例如,如果您希望实现标准差的缩减器,您可以根据以前的 stddev 和新平均值来计算它。
此外,有没有办法标准化/标准化(整个,即不是批量)tf.data.Dataset,特别是如果不使用tf.data.Dataset.reduce?
不,这是不可能的,因为 a 中的元素在tf.data.Dataset生成它们之前不一定是已知的。
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |