iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3 完整实现DNN
  • 427
分享到

Python3 完整实现DNN

完整DNN 2023-01-31 06:01:31 427人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

    完整实现DNN,包括前向传播和反向传播。实现一个2次函数的拟合。#!/usr/bin/env python3 # -*- coding: ut

    完整实现DNN,包括前向传播和反向传播。实现一个2次函数的拟合。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun May  6 16:11:40 2018

@author: wsw
"""

# construct simple DNN
import numpy as np
import matplotlib.pyplot as plt
import sys

def generate_data():
    x = np.linspace(-2,2,100)[np.newaxis,:]
    noise = np.random.nORMal(0.0,0.5,size=(1,100))
    y = x**2+noise
    return x,y


class DNN():
    
    def __init__(self,input_nodes=1,hidden1_nodes=4,hidden2_nodes=4,output_nodes=1):
        self.input_nodes = input_nodes
        self.hidden1_nodes = hidden1_nodes
        self.hidden2_nodes = hidden2_nodes
        self.output_nodes = output_nodes
        self.build_DNN()
        
    def build_DNN(self):
        np.random.seed(1)
        # Layer1 parameter
        self.w1 = np.random.normal(0.0,0.1,size=(self.hidden1_nodes,self.input_nodes))
        self.b1 = np.zeros(shape=(self.hidden1_nodes,1))
        # Layer2 parameter
        self.w2 = np.random.normal(0.0,0.2,size=(self.hidden2_nodes,self.hidden1_nodes))
        self.b2 = np.ones(shape=(self.hidden2_nodes,1))
        # Layer3 parameter
        self.w3 = np.random.normal(0.0,0.5,size=(self.output_nodes,self.hidden2_nodes))
        self.b3 = np.zeros(shape=(self.output_nodes,1))
        
    def forwardPropagation(self,inputs):
        self.z1 = np.matmul(self.w1,inputs) + self.b1
        self.a1 = 1/(1+np.exp(-self.z1))
        self.z2 = np.matmul(self.w2,self.a1) + self.b2
        self.a2 = 1/(1+np.exp(-self.z2))
        self.z3 = np.matmul(self.w3,self.a2) + self.b3
        self.a3 = self.z3
    
    def backwardPropagation(self,da,a,a_1,w,b,last=False):
        '''
        da:current layer activation output partial devirate result
        a:current layer activation output
        a_1:previous layer of current layer activation output
        w:current parameter
        b:current bias
        '''
        # dz = da/dz
        if last:
            dz = da
        else:
            dz = a*(1-a)*da
        # dw = dz/dw
        nums = da.shape[1]
        dw = np.matmul(dz,a_1.T)/nums
        db = np.mean(dz,axis=1,keepdims=True)
        # da_1 = dz/da_1
        da_1 = np.matmul(w.T,dz)
        
        w -= 0.5*dw
        b -= 0.5*db
        return da_1
    
    def train(self,x,y,max_iter=50000):
        for i in range(max_iter):
            self.forwardPropagation(x)
            #print(self.a3)
            loss = 0.5*np.mean((self.a3-y)**2)
            da = self.a3-y
            da_2 = self.backwardPropagation(da,self.a3,self.a2,self.w3,self.b3,True)
            da_1 = self.backwardPropagation(da_2,self.a2,self.a1,self.w2,self.b2)
            da_0 = self.backwardPropagation(da_1,self.a1,x,self.w1,self.b1)
            self.view_bar(i+1,max_iter,loss)
        return self.a3
    
    def view_bar(self,step,total,loss):
        rate = step/total
        rate_num = int(rate*40)
        r = '\rstep-%d loss value-%.4f[%s%s]\t%d%% %d/%d'%(step,loss,'>'*rate_num,'-'*(40-rate_num),
                                      int(rate*100),step,total)
        sys.stdout.write(r)
        sys.stdout.flush()
        
if __name__ == '__main__':
    x,y = generate_data()
    plt.scatter(x,y,c='r')
    plt.ion()
    print('plot') 
    dnn = DNN()
    predict = dnn.train(x,y)
    plt.plot(x.flatten(),predict.flatten(),'-')
    plt.show()
    

      
        
运行结果:

--结束END--

本文标题: Python3 完整实现DNN

本文链接: https://www.lsjlt.com/news/190656.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3 完整实现DNN
        完整实现DNN,包括前向传播和反向传播。实现一个2次函数的拟合。#!/usr/bin/env python3 # -*- coding: ut...
    99+
    2023-01-31
    完整 DNN
  • Python3+Pygame实现射击游戏完整代码
    目录一、游戏特点二、运行效果展示三、完整代码四、运行方式之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够“炫” 今天浏览Python资料的...
    99+
    2024-04-02
  • Python利用DNN实现宝石识别
    目录任务描述深度神经网络(DNN)数据集介绍1.数据准备2.定义模型3.训练模型4.模型评估5.模型预测任务描述 本次实践是一个多分类任务,需要将照片中的宝石分别进行识别,完成宝石的...
    99+
    2024-04-02
  • python3 实现除法结果为整数
    问题描述 101/100,想要的结果是1,但是算出来的结果是1.01 解决方案 101 // 100 结果图 补充:python2 与 3:一般除法、除法取整、除法取余、精确减...
    99+
    2024-04-02
  • python3整数反转的实现方法
    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1...
    99+
    2024-04-02
  • GoLang完整实现快速列表
    目录快速列表介绍实现快速列表快速列表的结构快速列表的迭代器添加和插入元素删除元素遍历快速列表完整实现快速列表介绍 快速列表(quicklist)是Redis中特有的一种数据结构,主要...
    99+
    2022-12-17
    GoLang快速列表 Go实现快速列表
  • AndroidService完整实现流程分析
    目录前言一.APP侧启动Service1.1 前台和后台启动1.2startServiceCommon二.系统侧分发处理Service的启动逻辑2.1 AMS接受启动service的...
    99+
    2023-01-02
    Android Service Android Service实现原理
  • C++实现KDTree 附完整代码
    目录简介举例分割的作用一维二维n维关于kdtree的重要问题一.树的建立关键代码简介   k-d树(k-dimensional),是一种分割k维数据空间的数据...
    99+
    2024-04-02
  • python热力图实现的完整实例
    目录一、数据无量纲化处理 (热力图)1.数据无量纲化处理(仅介绍本文用到的方法):min-max归一化2.代码展示3.效果展示二、皮尔斯系数相关(热力图)1.数学知识2.代...
    99+
    2024-04-02
  • C++实现AVL树的完整代码
    AVL树的介绍 AVL树是一种自平衡的二叉搜索树,它通过单旋转(single rotate)和双旋转(double rotate)的方式实现了根节点的左子树与右子树的高度差不超过1...
    99+
    2024-04-02
  • vue实现购物车完整功能
    vue实现购物车商品单选、全选及商品数量和总价计算,供大家参考,具体内容如下 效果展示 HTML <template>   <div class="buyCar"...
    99+
    2024-04-02
  • Java完整实现记事本代码
    进入今天的正题: 1.整体设计思路如下: (1)使用顶层容器JFrame。 (2)设置功能菜单并通过BorderLayout进行边框布局管理。 (3)设置相应按钮与文件编辑区。 (4...
    99+
    2024-04-02
  • Nodejs实现定时爬虫的完整实例
    目录事件起因使用 Node Schedule 实现定时任务一、安装 node-schedule二、基本用法三、高级用法四、终止任务总结事件起因 前两天要帮朋友B站舰长群审核,一个个...
    99+
    2024-04-02
  • python3如何实现除法结果为整数
    这篇文章主要介绍了python3如何实现除法结果为整数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题描述101/100,想要的结果是1,但是算出来的结果是1.01解决方案...
    99+
    2023-06-14
  • 用java实现完整的停车系统
    这篇文章主要介绍“用java实现完整的停车系统”,在日常操作中,相信很多人在用java实现完整的停车系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用java实现完整的停车...
    99+
    2024-04-02
  • java实现马踏棋盘的完整版
    本文实例为大家分享了java实现马踏棋盘的具体代码,供大家参考,具体内容如下 马踏棋盘很好实现,但有时运行起来特别慢,还可能出不来结果,在这里要用到贪心算法来优化,即找出最难走的路径...
    99+
    2024-04-02
  • 用C语言完整实现2048游戏
    目录前言一、游戏思路二、游戏框架 1.菜单界面2.游戏主体1.初始化界面:2.随机生成初始数字3.实现移动4.增加新数字5.判定胜负6.游戏函数三、游戏运行四、所有代码总结 前言 游...
    99+
    2024-04-02
  • 小程序实现购物车完整版
    小程序实现完整购物车[全选/反选计算金额/加减计算数量跟金额],供大家参考,具体内容如下 一、wxml页面代码模块 <view wx:if="{{hasList}}">...
    99+
    2024-04-02
  • Node中完整的 node addon 实现流程
    目录背景介绍为什么要写 node addonnode addon 是什么addon 实现方式的变迁Chrome V8 APINAN 时代符合 ABI 的 N-API编码阶段如何写出正...
    99+
    2024-04-02
  • vue backtop组件的实现完整代码
    效果: 代码: <template> <div class="back-top"> <div > <img src="im...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作