Keras 在自定义损失函数中访问单个值
Keras access individual values in custom loss function
我想实现如下损失函数:
- 收到一批维度(batch_size,number_out_nodes)
- 对每个 row/sample 应用 scipy 函数,将其映射到实数
- 合并批次中所有样本的结果
我已经使用 numpy 数组作为输入编写了函数。
看起来像这样:
def loss_func(y_true, y_pred):
y_pred = np.array(y_pred)
list_of_factors = [4]*len(y_pred)
val = 0
for idx, factor in list_of_factors:
val += factor*scipy_func(y_pred[idx])
return val
有什么方法可以将这个函数实现为 Keras 损失函数吗?我不知道如何访问该批次的单个样本。
谢谢
你不能应用任何scipy函数因为你在损失函数中得到的变量是tensors 而不是 nD NumPy 数组。所以在以张量为参数的损失函数中没有 NumPy 或 SciPy。
根据您的 scipy 函数 是什么,您也许可以使用 Keras backend 中可用的操作来实现它。大多数函数类似于 NumPy 操作,但作用于张量。
查看 existing loss functions 以及它们如何使用这些后端函数对张量进行运算。
我想实现如下损失函数:
- 收到一批维度(batch_size,number_out_nodes)
- 对每个 row/sample 应用 scipy 函数,将其映射到实数
- 合并批次中所有样本的结果
我已经使用 numpy 数组作为输入编写了函数。
看起来像这样:
def loss_func(y_true, y_pred):
y_pred = np.array(y_pred)
list_of_factors = [4]*len(y_pred)
val = 0
for idx, factor in list_of_factors:
val += factor*scipy_func(y_pred[idx])
return val
有什么方法可以将这个函数实现为 Keras 损失函数吗?我不知道如何访问该批次的单个样本。
谢谢
你不能应用任何scipy函数因为你在损失函数中得到的变量是tensors 而不是 nD NumPy 数组。所以在以张量为参数的损失函数中没有 NumPy 或 SciPy。
根据您的 scipy 函数 是什么,您也许可以使用 Keras backend 中可用的操作来实现它。大多数函数类似于 NumPy 操作,但作用于张量。
查看 existing loss functions 以及它们如何使用这些后端函数对张量进行运算。