神经网络中的损失函数:

1.神经网络的复杂度:多用神经网络的层数和神经网络的参数的个数表示。

2.层数=隐藏层的层数+1个输出层,总参数=总的权重w与总的偏置项b。

3.自定义损失函数:

通过每个需要预测的结果y与标准答案y_比较,计算其损失累计和,即loss(y_,y)=sum{f(y_,y)},其中y_是标准答案数据集的,y为预测答案计算出的。

函数f定义如下 当y<y_时,f(y_,y)=w1*(y_-y);y>=y_时, f(y_,y)=w1*(y_-y);其中w1和w2为两个相互的矛盾,通过这样权衡,以达到最优。

4.在tensorflow中通过tf.reduce_sum()实现:

loss=tf.reduce_sum(tf.where(greater(y,y_),w1*(y_-y),w1*(y_-y))),其中tf.greater(y,y_)判断两参数大小,然后根据判断结果选择计算式子。

5.交叉熵(Cross Entropy):表征两个概率分布之间的距离;

H(y_,y)=-Sum(y_*logy),y_表示标准答案的概率分布,y表示预测结果的概率分布。通过交叉熵可以判断那个预测结果与标准答案更接近。

6.在tensorflow中通过tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-12,1.0)))实现,当y小于1e-12时,y为1e-12,大于1.0时,y为1.0。

7.当n分类的n个输出(y1,y2,...,yn)通过softmax()函数,便满足了概率分布要求:

任意x,P(X=x)属于[0,1]且sum(P(X=x))=1

8.softmax(y_i)={e^{y_i}}/sum{^n,_j=1}{e^{y_i}},

ce=tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))

cem=tf.reduce_mean(ce)

实现了先使数据满足概率分布,在计算交叉熵的方法。

9.常用的激活函数:

f(x)=0,x小于等于0时, f(x)=x,x大于0时,即tf.relu();

f(x)=1/(1+e^{-x}),即tf.nn.sigmoid();

f(x)=(1-e^{-2x})/(1+e^{-2x}),即tf.nn.tanh();

#实例应用

#导入模块,生成数据集

import tensorflow as tf

import numpy as np

SIZE=8

seed=23455

COST = 1

PROFIT=9

rdm =np.random.RandomState(seed)

X=rdm.rand(32,2)

Y=[[x1+x2+(rdm.rand()/10.0-0.05)] for (x1,x2) in X]#合格为1,不合格为0

#定义神经网络的输入,参数和输出,定义前向传播的过程

x=tf.compat.v1.placeholder(tf.float32,shape=(None,2))

y_=tf.compat.v1.placeholder(tf.float32,shape=(None,1))

w1=tf.Variable(tf.random.normal([2,1],stddev=1,seed=1))

y=tf.matmul(x,w1)

#定义损失函数及反向传播方法

#loss_mse=tf.reduce_mean(tf.square(y_-y))

loss=tf.reduce_sum(tf.where(tf.greater(y,y_),(y-y_)*COST,(y_-y)*PROFIT))

train_step=tf.compat.v1.train.GradientDescentOptimizer(0.001).minimize(loss)

#生成会话,训练

with tf.compat.v1.Session() as sess:

init_op=tf.compat.v1.global_variables_initializer()

sess.run(init_op)

steps=2000

for i in range(steps):

start=(i * SIZE) % 32

end=start+SIZE

sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})

if i % 500 == 0:

print(i)

print(sess.run(w1))

print('\n')

print("训练结束参数w1:\n",sess.run(w1))

神经网络-损失函数:相关推荐

  1. 论文研读-机器学习可视化-神经网络损失函数吸引域可视化

    为交叉熵和平方误差神经网络损失函数的吸引域可视化 1 论文概述 1.1 文章摘要 1.2 专业术语 1.3 引言 2 相关工作 3 损失函数 4 适应值曲面分析 4.1 渐进梯度行走 4.2 损失梯度 ...

  2. 神经网络-损失函数是不是凸的

    损失函数是不是凸的? 不是 全局最优不一定是好的解,局部最优不一定是差的解 NN中设计得激活函数是为了引入非线性变换,凸不凸都可以 NN不凸,是多个隐藏层导致的,即使每一层激活函数都是凸的,目标函数依 ...

  3. 神经网络-损失函数-等高线理解

    一,等高线理解 如果一个变量 w J(w)=1m∑i(wxi−yi)2J(w) =\frac{1}{m}\sum_i(wx_i -y_i)^2 J(w)=m1​i∑​(wxi​−yi​)2 2/ 如果 ...

  4. yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1.基于libtorch的yolov5目标检测网络实现--COCO数据集json标签文件解析 2.基于libtorch的yolov5目标检测网络实现 ...

  5. 初识神经网络——损失函数

    运用神经网络可以解决简单的机器问题,如分类问题与回归问题,这些联系数学的映射可能可以理解的更为清楚. 分类问题就如其名,是将数据进行分类,其包括二分类问题与多分类问题.二分类问题可以联系数学中的是非函 ...

  6. 神经网络损失函数特别大_二值神经网络(Binary Neural Networks)最新综述

    作者|秦浩桐.龚睿昊.张祥国 单位|北京航空航天大学 研究方向|网络量化压缩 本文介绍了来自北京航空航天大学刘祥龙副教授研究团队的最新综述文章 Binary Neural Networks: A Su ...

  7. 神经网络-损失函数和成本函数

    每一篇神经网络算法入门可能会介绍神经网络的结构,以及值与值之间如何传递的,递归公式等.今天,我们在已学习神经网络基础知识的前提下,学习一下成本函数. 神经网络算法的逻辑递归函数: 我们的最终目的是为了 ...

  8. 神经网络损失函数分布可视化神器

    论文名称和地址: Visualizing the Loss Landscape of Neural Nets https://arxiv.org/pdf/1712.09913.pdf 1.1 背景和动 ...

  9. 卷积神经网络 损失函数,卷积计算公式 神经网络

    神经网络(深度学习)的几个基础概念 从广义上说深度学习的网络结构也是多层神经网络的一种.传统意义上的多层神经网络是只有输入层.隐藏层.输出层.其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底 ...

最新文章

  1. VS Code Pettier设置换行最大宽度
  2. 【转载】数字签名是什么?
  3. php sequelize,node,express_sequelize 联合查询,node,express,mysql,sequelize - phpStudy
  4. python语言程序设计及医学应用_Python语言程序设计(高等学校计算机专业规划教材)...
  5. 台式蓝牙模块_华为第一台台式机来了!已上线官网 定价尚未公布
  6. Bootstrap3 插件的版本号
  7. JavaScript开发工具--Aptana
  8. 360浏览器升级_360安全卫士下载|360安全卫士 12.0 最新版
  9. 【新手可看懂】ubuntu配置appium环境
  10. SQL:postgresql中为查询结果增加一个自增序列之ROW_NUMBER () OVER ()的使用
  11. Sublime Text 3.1.1 Build 3176 注册码破解
  12. Java开发 明华usbkey_明华驱动官方版下载-明华usbkey数字证书驱动下载v3.0.2420.9 最新版-当易网...
  13. webstorm汉化流程
  14. 深度解读 AlphaGo 算法原理
  15. 微信小程序获取地理位置最佳实现
  16. C语言计算排列组合C(m,n)的值
  17. android sdk目录缺少uiautomatorviewer,解决Android8.0以上运行不了uiautomatorviewer的办法...
  18. 服务器安卓系统安装教程,云服务器安装安卓系统
  19. IOS端微信小程序API播放视频无效,应该这样做
  20. 用计算机牙模,人类恒牙的计算机三维建模

热门文章

  1. LeetCode 1488. 避免洪水泛滥(贪心+set二分查找)
  2. oracle获取今天凌晨的时间_oracle查询日期语句有哪些?
  3. python闭包详解函数_详解python函数的闭包问题(内部函数与外部函数详述)
  4. python中的range与list函数
  5. java自定义标签简单_JSP 自定义标签之一 简单实例
  6. 指标波动多大才算是异常?
  7. Python 画图常用点的形状,Matplotlib 设置参数marker的值 - o + - ★☆►◁ - 够用
  8. mysql一图秒懂秒清晰 - join连接 ,left join左连接 ,right join右连接 ,inner join内连接
  9. 用promise封装ajax_ES6-promise封装AJAX请求
  10. Bifrost微前端框架及其在美团闪购中的实践