zoukankan      html  css  js  c++  java
  • 【python实现卷积神经网络】损失函数的定义(均方误差损失、交叉熵损失)

    代码来源:https://github.com/eriklindernoren/ML-From-Scratch

    卷积神经网络中卷积层Conv2D(带stride、padding)的具体实现:https://www.cnblogs.com/xiximayou/p/12706576.html

    激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus):https://www.cnblogs.com/xiximayou/p/12713081.html

    这节讲解两个基础的损失函数的实现:

    from __future__ import division
    import numpy as np
    from mlfromscratch.utils import accuracy_score
    from mlfromscratch.deep_learning.activation_functions import Sigmoid
    
    class Loss(object):
        def loss(self, y_true, y_pred):
            return NotImplementedError()
    
        def gradient(self, y, y_pred):
            raise NotImplementedError()
    
        def acc(self, y, y_pred):
            return 0
    
    class SquareLoss(Loss):
        def __init__(self): pass
    
        def loss(self, y, y_pred):
            return 0.5 * np.power((y - y_pred), 2)
    
        def gradient(self, y, y_pred):
            return -(y - y_pred)
    
    class CrossEntropy(Loss):
        def __init__(self): pass
    
        def loss(self, y, p):
            # Avoid division by zero
            p = np.clip(p, 1e-15, 1 - 1e-15)
            return - y * np.log(p) - (1 - y) * np.log(1 - p)
    
        def acc(self, y, p):
            return accuracy_score(np.argmax(y, axis=1), np.argmax(p, axis=1))
    
        def gradient(self, y, p):
            # Avoid division by zero
            p = np.clip(p, 1e-15, 1 - 1e-15)
            return - (y / p) + (1 - y) / (1 - p)

    其中y是真实值对应的标签,p是预测值对应的标签。

    补充:

    • numpy.clip():看个例子

      import numpy as np
      x=np.array([1,2,3,5,6,7,8,9])
      np.clip(x,3,8)
      array([3, 3, 3, 5, 6, 7, 8, 8])

    这里使用到了mlfromscrach/utils/data_operation.py中的:

    def accuracy_score(y_true, y_pred):
        """ Compare y_true to y_pred and return the accuracy """
        accuracy = np.sum(y_true == y_pred, axis=0) / len(y_true)
        return accuracy

    用于计算准确率。

  • 相关阅读:
    ios资源
    学习swift开源项目
    学习di'z地址
    IOS基础库
    IT自学论坛
    HVTableView 分享组
    IOS中的动画菜单
    iOS 通讯录操作
    ios中autolayout
    ios 程序学习
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12713198.html
Copyright © 2011-2022 走看看