问题标签 [keras-metrics]
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.
machine-learning - Keras categorical_accuracy 指标的输出是什么?
我找不到指标输出的正确描述。
例如,如果我使用
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
然后我得到损失和准确性tr_loss, tr_acc = model.train_on_batch(X, Y)
如果我编译,metrics=['categorical_accuracy']
那么我也会得到 2 个数字,
但它们是什么?
编辑:我这样做了:print(model.metrics_names)
并得到:['loss', 'categorical_accuracy']
tensorflow2.0 - 如何在 Tensorflow 2.0 中使用误报指标?
在 Tensorflow 2.0 中,我正在尝试构建一个模型,将我的对象分为两类:正面和负面。
我想使用tf.keras.metrics.FalsePositives
和tf.keras.metrics.FalseNegatives
指标来查看模型如何随着每个时期的改进而改进。这两个指标都有断言规定:[predictions must be >= 0]
和[predictions must be <= 1]
。
问题是未经训练的模型可以生成任意数字作为预测。但即使是经过训练的模型有时也会产生略高于 1 或略低于 0 的输出。
有没有办法禁用这些断言?
或者,是否有任何合适的激活函数可以强制模型输出进入[0, 1]
范围而不会导致学习率出现任何问题?
tensorflow - 将自定义 keras 指标输入分成两个单独的指标并找到中值误差
我有一个用于相机姿势网络的 ResNet 网络。我已经用 1024 密集层替换了最后的分类器层,然后是 7 密集层(前 3 个用于 xyz,最后 4 个用于四元数)。
我的问题是我想将 xyz 误差和四元数误差记录为两个单独的误差或指标(而不是仅仅意味着所有 7 个的绝对误差)。customer_error(y_true,y_pred) 的自定义度量模板的输入是张量。我不知道如何将输入分成两个不同的 xyz 和 q 数组。该函数在编译时运行,此时张量为空且没有任何 numpy 组件。
最终我想得到中位数 xyz 和 q 误差使用
中值 = tensorflow_probability.stats.percentile(输入,q=50,插值='线性')。
任何帮助将非常感激。
validation - tf.keras.metrics.MeanIoU 与 sigmoid 层
我有一个用于语义分割的网络,我的模型的最后一层应用了 sigmoid 激活,因此所有预测都在 0-1 之间缩放。有这个验证指标 tf.keras.metrics.MeanIoU(num_classes),它将分类预测(0 或 1)与验证(0 或 1)进行比较。因此,如果我进行预测并应用此指标,它会自动将连续预测映射到阈值 = 0.5 的二进制吗?是否有可能手动定义阈值?
tensorflow - 训练期间残差不为零的 TensorFlow 指标
目前,我正在使用 tensorflow 和来自 keras 应用程序的 ImageNet 预训练 EfficientNetB0 研究图像错误分类器。作为指标,我使用的是假阳性 (fp)、真阳性 (tp)、假阴性 (fn)、真阴性 (tn)……我对 fp、tp、fn 和 tn 等指标的问题是它们在训练期间不是真正的整数值(即 tp = 4883.6257),只有在验证期间它们才是整数值。据我所知,这些指标应该始终是整数,因为它们只是假阳性预测样本的数量。有什么我错过了 keras 在训练期间计算这些值的功能吗?
作为输入管道,我使用 tensorflow ImageDataGenerator 和 .flow_from_dataframe() 函数:
设置模型:
为了更好地分析,我添加了以下指标:
python - Keras 模型的自定义指标,使用 Tensorflow 2.1
我想添加一个自定义指标来使用 Keras 建模,我正在调试我的工作代码,但我找不到执行所需操作的方法。
该问题可以描述为通过逻辑多项式回归进行的多分类。我想实现的自定义指标是这样的:
其中 Number_of_Classes 必须从批次计算,即类似于np.unique(y_true).count()
and 并且每个求和项都类似于
就混淆矩阵而言(以 2 个变量的最小形式)
公式是0.5*(15)/(15+12) + 0.5*(1/(1+3))=0.4027
代码可能类似于
我的预处理数据是一个像 numpy 的数组x=[v1,v2,v3,v4,...,vn]
,而我的目标列是一个 numpy 数组y=[1, 0, 1, 0, 1, 0, 0, 1 ,..., 0, 1]
然后,它们被转换为张量:
然后,它们被转换为 tensorflow 数据集对象:
后来,我拿了一个迭代器:
最后,我采用迭代器的一个元素并训练
因此,由于对象是数据集迭代器,我无法找到按我的意愿操作它们的函数,以便获得所描述的自定义指标。
keras - 应用一些增强层后,真阳性和假阳性分数下降到零
我试图使用 Keras 实现一种简单形式的 DexiNed 架构。由于 BIPED 数据集有 200 个训练图像和 50 个测试图像,我想在训练模型之前应用一些增强层。然而,当我尝试这个时,TP 和 FP 分数在 2-3 个 epoch 后变为 0,并且从未增加。当我在不使用增强的情况下进行训练时,结果证明是正确的,并且模型运行良好。为什么当我扩充数据集时这个分数会降低。
这些是我使用的图层。我什至只尝试了 1-2 层,但结果没有改变。
python - 通过张量流度量跟踪 SSD 中每个类的误报数
我正在尝试使用张量流度量来跟踪 SSD 网络在训练/验证期间产生了多少误报。
我尝试自己编写,但是当它应该产生一个整数时它会输出一个浮点数(例如,有 1.3 个假阴性预测没有意义)。这告诉我我的代码要么做错了事,要么 tensorflow 正在添加一个我没有补偿的标量。代码如下。
我还尝试使用我已经为其他类型的指标工作的内置指标。问题是 SSD 输出张量的输出具有传递给度量的形状,每个项目都有形状(#boxes,#classes),而内置的tf.keras.metrics.FalseNegatives度量类期望单个值输入.
归根结底,我这样做是为了了解网络在哪里出现问题,这样我就可以看看添加其他类型的类是否会改善它。如果有更好的方法,请告诉我!这是我的第一个迁移学习项目
代码。为传递给构建器函数的每个类生成假阴性度量,该构建器函数为每个类返回一个度量函数。通常,这还包括其他指标,但我在这里对其进行了修剪,仅包括计算 # 假阴性:
以下是在训练之前传递指标的方式: