IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python-两层神经网络的类 -> 正文阅读

[人工智能]Python-两层神经网络的类

图形解释

在这里插入图片描述
画图软件不太常用

代码实现

import numpy as np
def numerical_gradient(f,x):
    h=1e-4
    # 生成与x形状相同的数组
    grad=np.zeros_like(x)
    for idx in range(x.size):
        tmp_val=x[idx]
        x[idx]=tmp_val+h
        fxh1=f(x)
        x[idx]=tmp_val-h
        fxh2=f(x)
        grad[idx]=(fxh1-fxh2)/2*h
        x[idx]=tmp_val
    return grad
        
def sigmold(x):
    return 1/(1+np.exp(-x))
def softmax(a):
    c=np.max(a)
    exp_a=np.exp(a-c)
    sum_exp_a=np.sum(exp_a)
    y=exp_a/sum_exp_a
    return  y
def cross_enroty_errorly(y,t):
    if y.ndim==1:
        t=t.reshape(1,t.size)
        y=y.reshape(1,y.size)
    batch_size=y.shape(0)
    return -np.sum(np.log(y[np.arange(batch_size),t]+1e-7))/batch_size
class TwolayerNet:
    def __init__(self,input_size,hidden_size,output_size,weight_init_std=0.01):
        self.params={}
        self.params["w1"]=weight_init_std*np.random.randn(input_size,hidden_size)
        self.params["w2"]=weight_init_std*np.random.randn(hidden_size,output_size)
        self.params["b1"]=np.zeros(hidden_size)
        self.params["b2"]=np.zeros(output_size)
    def predict(self,x):
        w1,w2=self.params["w1"],self.params["w2"]
        b1,b2=self.params["b1"],self.params["b2"]
        a1 = np.dot(x,w1) + b1
        z1 = sigmold(a1)
        a2 = np.dot(z1,w2) + b1
        y=softmax(a2)
        return y
    def loss(self,x,t):
        y=self.predict(x)
        return cross_enroty_errorly(y,t)
    def accury(self,x,t):
        y=self.predict(x)
        y=np.argmax(y,axis=1)
        t=np.argmax(1,axis=1)
        accury=np.sum(y==t)/float(x.shape[0])
        return accury
    def numerical_gradient(self,x,t):
        loss_w=lambda w:self.loss(x,t)
        grads={}
        grads["w1"]=(loss_w,self.params["w1"])
        grads["b1"] = numerical_gradient(loss_w, self.params["b1"])
        grads["w2"] = numerical_gradient(loss_w, self.params["w2"])
        grads["b2"] = numerical_gradient(loss_w, self.params["b2"])
        return grads
    

内容解释

高数

两个常用函数

1.sigmoid

该函数实际上就是一个转换器,输入某个数会有值传出。
如h(2.0)=0.731
多用于二元分类问题

def sigmold(x):
    return 1/(1+np.exp(-x))

2.softmax
该函数负责完成信号的转换,输出的时概率,且输出的总和为1.
假设输出层有三个神经元,第一个神经元的输出y=该神经元的信号/三个输入信号之和

def softmax(a):
    c=np.max(a)
    exp_a=np.exp(a-c)
    sum_exp_a=np.sum(exp_a)
    y=exp_a/sum_exp_a
    return  y

mini-batch版交叉熵误差

y是神经网络的输出,t是监督数据
计算正确解标签的输出的自然对数

def cross_enroty_errorly(y,t):
    if y.ndim==1:
        t=t.reshape(1,t.size)
        y=y.reshape(1,y.size)
    batch_size=y.shape(0)
    return -np.sum(np.log(y[np.arange(batch_size),t]+1e-7))/batch_size

梯度

通过数值微分来确定梯度

def numerical_gradient(f,x):
    h=1e-4
    # 生成与x形状相同的数组
    grad=np.zeros_like(x)
    for idx in range(x.size):
        tmp_val=x[idx]
        x[idx]=tmp_val+h
        fxh1=f(x)
        x[idx]=tmp_val-h
        fxh2=f(x)
        grad[idx]=(fxh1-fxh2)/2*h
        x[idx]=tmp_val
    return grad

后记

刚入门,错误的请指出。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:44:16  更:2022-05-01 15:44:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:43:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码