我有一个模型,它预测5个类别。我想像下面的例子一样更改准确率指标:
def accuracy(y_pred,y_true): #我们的预测张量 y_pred = [ [0,0,0,0,1], [0,1,0,0,0], [0,0,0,1,0], [1,0,0,0,0], [0,0,1,0,0]] # 对张量 y_pred 进行一些操作 # 操作描述: for array in y_pred : if array[3] == 1 : array[3] = 0 array[0] = 1 if array[4] == 1 : array[4] = 0 array[1] = 1 else : continue # 这些操作对数组来说很好,但如何在张量上实现呢? # 操作后的结果-> y_pred = [ [0,1,0,0,0], [0,1,0,0,0], [1,0,0,0,0], [1,0,0,0,0],[0,0,1,0,0] ] # 我希望对 y_true 进行相同的操作 # 然后我想以简单 tf.keras.metrics.Accuracy 指标的方式运行这些预处理的张量
我认为 tf.where 可以帮助过滤张量,但遗憾的是我无法正确实现这一点。
如何使用张量来创建这种预处理的准确率指标?
回答:
如果你想将1向左移动3个索引,可以这样做:
[[0 0 0 0 1] [0 1 0 0 0] [0 0 0 1 0] [1 0 0 0 0] [0 0 1 0 0]][[0 1 0 0 0] [0 0 0 1 0] [1 0 0 0 0] [0 0 1 0 0] [0 0 0 0 1]]
更新:
如果你只想移动索引3和4的位置。
[[0 0 0 0 1] [0 1 0 0 0] [0 0 0 1 0] [1 0 0 0 0] [0 0 1 0 0]][4 1 3 0 2][[0 1 0 0 0] [0 1 0 0 0] [1 0 0 0 0] [1 0 0 0 0] [0 0 1 0 0]]