tensorflow - 是否有可能有一个返回数组(或张量)而不是数字的度量?
问题描述
我有一个带有输出的神经网络NxM
,其中N
是批量大小,并且M
是网络需要进行预测的输出数量。我想为M
网络的每个输出计算一个度量,即跨批次的所有实例,但对每个M
输出分别计算,这样就会有M
这个度量的值。我尝试按如下方式创建自定义指标。
def my_metric(y_true, y_pred):
return [3.1, 5.2] # a list of dummy values
然后将此度量传递给compile
模型的方法的度量列表,然后 Keras 输出一个数字,该数字是3.1
和5.2
(在本例中为(3.1 + 5.2)/2 = 4.15
)的平均值,而不是打印实际列表。那么,有没有办法返回和打印一个列表(或 numpy 数组)作为指标?当然,在我的具体情况下,我不会返回上面示例中的虚拟列表,但我的自定义指标更复杂。
解决方案
每 M 制定一个指标。
一个输出的工作代码:
from keras.layers import Dense, Input
from keras.models import Model
import keras.backend as K
import numpy as np
inputs = Input((5,))
outputs = Dense(3)(inputs)
model = Model(inputs, outputs)
def metricWrapper(m):
def meanMetric(true, pred):
return pred[:, m]
meanMetric.__name__ = 'meanMetric_' + str(m)
return meanMetric
metrics = [metricWrapper(m) for m in range(3)]
model.compile(loss='mse', metrics=metrics, optimizer='adam')
model.fit(np.random.rand(10,5), np.zeros((10,3)))
推荐阅读
- python - 如何暂停主线程直到完成一组并行线程的执行?
- python - 如何遍历 Indeed 评论并找到相应的工作机会,打印员工评论?
- nativescript -
工作正常但会导致问题 - python - 从 XLS 文件数据更新 json 文件
- java - 在 Java 中将 Long 与 Double 相除会产生错误的结果
- javascript - 根据用户交互显示数据库列表
- c# - 神经网络周期性成本值变化
- internationalization - 在 aiohttp 中翻译
- javascript - 如何在 amCharts4 上禁用值轴(Yaxis)上的光标值
- c# - 如何在使用 C# 无法检测到 json 中的项目时显示警告