[吃药深度学习随笔] 损失函数

神经元模型

常用的激活函数(激励函数):

神经网络(NN)复杂度:多用神经网络层数和神经网络参数个数来表示

  层数 = 隐藏层层数+1个输出层

  参数个数 = 总W(权重) + 总B(偏置)

  比如

  

  

损失函数(loss):预测值y 和已知答案y_ 的差距

  神经网络优化目标:使损失函数loss 达到最小

  常用loss计算方法:均方误差MSE

  公式:

  在TensorFlow中代码:

 loss_MSE = tf.reduce_mean(tf.square(y-y_))

例子:

import tensorflow as tf
import numpy as np

BATCH_SIZE = 8
SEED = 23333

#X1和X2在影响Y的关系系数
Px1 = 3
Px2 = 2

rdm = np.random.RandomState(SEED)
X = rdm.rand(320, 2)
#此处用关系系数加权得到Y
Y_ = [[Px1*x1+Px2*x2+(rdm.rand()/10.0 -0.05)]for (x1, x2) in X]

#定义神经网络的输入、参数和输出,定义前向传播过程
x = tf.placeholder(tf.float32, shape=(None, 2))
y_ = tf.placeholder(tf.float32, shape=(None, 1))
w1 = tf.Variable(tf.random_normal([2, 1], stddev=1))
y = tf.matmul(x, w1)

#定义损失函数和反向传播方法
loss_mse = tf.reduce_mean(tf.square(y_ - y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss_mse)

#生成会话 训练
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    for i in range(10000):
        start = (i*BATCH_SIZE) % 320
        end = start + BATCH_SIZE
        sess.run(train_step, feed_dict={x: X[start:end], y_: Y_[start:end]})
        if i % 500 == 0:
            print ("w1:", sess.run(w1), "loss:", sess.run(loss_mse, feed_dict={x: X[start:end], y_: Y_[start:end]}))

最终得到接近于开始设定的Px1 = 3 Px2 =2

w1: [[2.9960208]
 [1.9995174]] loss: 0.00053528405

原文地址:https://www.cnblogs.com/EatMedicine/p/9030321.html

时间: 2024-08-30 16:02:16

[吃药深度学习随笔] 损失函数的相关文章

[吃药深度学习随笔] 练习:训练二次方程的参数

import tensorflow as tf import numpy as np #训练二次函数的参数 #二次函数: y = ax^2 + bx +c SEED = 12345 #ABC参数 pA = 2 pB = 5 pC = 100 rng = np.random.RandomState(SEED) X = rng.rand(320, 1) #定义一个a=2 b=5 c=10的二次方程 Y = [[float(pA * pow(i, 2) + pB * i + pC)] for i in

[吃药深度学习随笔] 张量 计算图 会话

张量(tensor):即多为数组/列表 阶:即为张量的维数 张量可以表示0阶到n阶的多维数组 例子: import tensorflow as tf a = tf.constant([1.0, 2.0]) b = tf.constant([3.0, 4.0]) result = a+b print(result) 得到结果 Tensor("add:0", shape=(2,), dtype=float32) 计算图(Graph):搭建神经网络的计算过程,只搭建,不运算,运算在会话(Se

[吃药深度学习随笔] 前向传播:即如何在图中输入数据向前推进从而得到计算结果

w = tf.Variable(tf.random_normal([2,3], stddev=2,mean=0, seed=1)) 其中 tf.random_normal是正太分布 除了这个 还有tf.truncated_normal:去掉过大偏离点(大于2个标准差)的正态分布 tf.random_uniform:平均分布 [2,3]是生成2x3的矩阵 stddev是标准差 mean是均值 seed是随机数种子 构造其余量的方法: #tf.zeros 全0数组 tf.zeros([3,2], i

深度学习补充和总结

一.损失函数 深度学习中,常用的损失函数为均方误差和交叉熵,分别对应回归和分类问题,其实深度学习的损失函数和机器学习的损失函数差不多,是一致的,均方误差就相当于最小二乘,交叉熵其实是一种特殊的对数损失函数形式,这里不再赘述. 二.激活函数 是深度学习特有的. 关于激活函数,首先要搞清楚的问题是,激活函数是什么,有什么用?不用激活函数可不可以?答案是不可以.激活函数的主要作用是提供网络的非线性建模能力.如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络

深度学习之概述(Overview)

2016年被称为人工智能的元年,2017年是人能智能应用的元年:深度学习技术和应用取得飞速发展:深度学习在互联网教育场景也得到广泛应用.本文主要介绍机器学习及深度学习之定义及基本概念.相关网络结构等. 本文主要内容包括机器学习的定义及组成分类.深度学习的定义.深度学习和机器学习的区别.神经网络基本概念及基本结构.深度学习的相关核心概念(基本假设.数据集.表示.泛化.容量.优化.超参数.误差.欠拟合.过拟合.正则化).两种典型深度网络结构(CNN.RNN)基本介绍. 引言 人工智能究竟能够做什么?

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点

第一天<CNN基础知识点>From:Convolutional Neural Networks (LeNet) 神经认知机. CNN的灵感来源在诸多论文中已经讲得很全面了,就是伟大的生物发现Receptive Field(感受野细胞).根据这个概念提出了神经认知机.它的主要作用就是Recept部分图像信息(或特征),然后通过分层递交相连,将各个局部特征组合成整个图像特征. 需要仔细阅读的论文包括: (1) 第一篇关于感受野功能的论文Receptive fields and functional

Linux 桌面玩家指南:15. 深度学习可以这样玩

特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之间的内容按照数学公式进行排版,从而导致评论区格式混乱.如果大家的评论中用到了$,但是又不是为了使用数学公式,就请使用\$转义一下,谢谢. 想从头阅读该系列吗?下面是传送门: Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论 [约 1.1 万字,22 张图片] Linux 桌面玩家指南

Deep Learning(深度学习)学习笔记整理系列七

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.计算机视觉.神经网络等等基础(如果没有也没关系了,没

TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)

前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep learning,without a PhD> 当然登入须要FQ,我也顺带巩固下,做个翻译.不好之处请包括指正. 当然须要安装python,教程推荐使用python3.假设是Mac,能够參考博主的另外两片博文,Mac下升级python2.7到python3.6, Mac安装tensorflow1.0 好多专业词