01深度学习——概念、线性问题、损失函数

1.1机器学习分类和神经网络简介

1.1.1发展历程

1942年 提出机器人三定律:1不能伤害人类  2必须执行人类命令,不能违背第一条  3在第1、2条定律的前提下保护好自己;

2006年高歌猛进

计算智能   感知智能   认知智能

1.1.2人工智能体系

机器学习和人类学习的联系

1.1.3机器学习的分类:

1.1.31按学习方式分类:

全监督学习、半监督学习、无监督学习

1.1.32按学习结果分类:

判别模型、生成模型

1.1.33按知识体系分类:

统计学模型、仿生学模型

1.1.34按应用领域分类

图像视觉领域、语音语义领域、自动化领域


1.2线性问题 

1.2.1线性可分与线性不可分

判断一堆数据是否能够线性可分的关键在于数据所在的维度

1.2.2 激活函数

激活函数的主要作用就是提供网络的非线性建模能力;

非线性建模能力可以看做是数据从一个空间映射到另一个空间的过程

1.3感知机模型

1.3.1感知机的来源

例如:感知器是一组实数向量作为输入,计算这些输入的线性组合,如果结果大于设定的阈值就输出1,否则输出-1.

output=f(wx+b)

1.3.2感知机的演变

多层感知机结构

(多层感知机也称为深度学习神经网络DNN)

1.4神经网络

1.4.1前向传播

1.4.2后向传播

1.4.3神经网络的训练

1.5 损失函数

1.5.1损失是什么

1.5.2 均方差损失函数

1.5.3交叉熵损失函数

1.6 参数更新

梯度下降

学习率(下降多少合适)

1.7样本

研究中实际观测或调查的一部分个体,不仅做为神经网络模型学习数据特征的来源,还要负责验证和评估模型的好坏程度;

可将数据分为三类  三者比例 6:2:2或8:1:1:

训练集:用来学习;

验证集 用来评判模型性能;

测试集 在现实中检测。

1.8 softmax函数

1、Softmoid函数的扩展

softmoid函数是解决二分类问题的函数,如果要区分多个类别急需要用到softmax

1.9 onehot

1.9.1onehot编码

1.9.2 onehot优势

1.9.3 softmax与onehot结合

2.0 tensorflow(简单网络实现代码)

tensorflow分为两部分,第一步先搭图;第二部会话

这个是一个两层的0-9数字手写识别代码

import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(".\MNIST_data",one_hot=True)
# mnist = ".\MNIST_data"
import matplotlib.pyplot as plt

class Net:
    def __init__(self):
        #输入信息
        self.x = tf.placeholder(dtype=tf.float32,shape=[None,784])
        #输入信息的标签
        self.y = tf.placeholder(dtype=tf.float32,shape=[None,10])
        #W 权重  [784,256]数字设置由网络与输入数据决定
        self.w1= tf.Variable(tf.truncated_normal(shape=[784,256],stddev=0.01,dtype=tf.float32))
        #B
        self.b1= tf.Variable(tf.zeros(shape=[256],dtype=tf.float32))

        #第二层
        self.w2= tf.Variable(tf.truncated_normal(shape=[256,10],stddev=0.01,dtype=tf.float32))
        self.b2= tf.Variable(tf.zeros(shape=[10],dtype=tf.float32))
    #前向
    def forward(self):
        y1 = tf.nn.relu(tf.matmul(self.x,self.w1)+self.b1)
        self.y2 = tf.matmul(y1,self.w2)+self.b2
        self.output = tf.nn.softmax(self.y2)
    #损失
    def loss(self):
        self.error = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=self.y,logits=self.y2))
    #后向  更新权重
    def backward(self):
        self.optimizer = tf.train.GradientDescentOptimizer(0.001).minimize(self.error)
    #准确率
    def accuracy(self):
        y = tf.equal(tf.argmax(self.output,axis=1),tf.argmax(self.y,axis=1))
        self.acc = tf.reduce_mean(tf.cast(y,dtype=tf.float32))
if __name__ == '__main__':
    net= Net()
    net.forward()
    net.loss()
    net.backward()
    net.accuracy()
    init = tf.global_variables_initializer()
    plt.ion()
    a=[]
    b=[]
    c=[]
    with tf.Session() as sess:
        sess.run(init)
        for i in range(50000):
            xs,ys = mnist.train.next_batch(100)
            error,_ = sess.run([net.error,net.optimizer],feed_dict={net.x:xs,net.y:ys})
            if i%100 == 0:
                xss,yss = mnist.validation.next_batch(100)
                _error,_output,acc = sess.run([net.error,net.output,net.acc],feed_dict={net.x:xss,net.y:yss})
                label= np.argmax(yss[0])
                out = np.argmax(_output[0])
                print("error:",error)
                print("label:",label,"output:",out)
                print(acc)
                a.append(i)
                b.append(error)
                c.append(_error)
                plt.clf()
                train, = plt.plot(a,b,linewidth = 1,color = "red")
                validate, = plt.plot(a,c,linewidth = 1, color = "blue")
                plt.legend([train,validate],["train","validate"],loc= "right top",fontsize = 10)
                plt.pause(0.01)
    plt.ioff()

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值