用tensorflow模仿BP神经网络执行过程

文章目录

  • 用矩阵运算仿真BP神经网络
          • y= relu ( (X․W ) + b )
          • y= sigmoid ( (X․W ) + b )
  • 以随机数产生Weight(W)与bais(b)
          • placeholder
  • 建立layer函数
  • 改进layer函数,使其能返回w和b

github地址https://github.com/fz861062923/TensorFlow

用矩阵运算仿真BP神经网络

import tensorflow as tf
import numpy as np
C:\Users\admin\AppData\Local\conda\conda\envs\tensorflow\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.from ._conv import register_converters as _register_converters
y= relu ( (X․W ) + b )
X = tf.Variable([[0.4,0.2,0.4]])W = tf.Variable([[-0.5,-0.2 ],[-0.3, 0.4 ],[-0.5, 0.2 ]])b = tf.Variable([[0.1,0.2]])XWb =tf.matmul(X,W)+by=tf.nn.relu(tf.matmul(X,W)+b)#引用ReLU激活函数with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)print('XWb:')    print(sess.run(XWb ))    print('y:')    print(sess.run(y ))
XWb:
[[-0.35999998  0.28      ]]
y:
[[0.   0.28]]
y= sigmoid ( (X․W ) + b )
X = tf.Variable([[0.4,0.2,0.4]])W = tf.Variable([[-0.5,-0.2 ],[-0.3, 0.4 ],[-0.5, 0.2 ]])b = tf.Variable([[0.1,0.2]])XWb=tf.matmul(X,W)+by=tf.nn.sigmoid(tf.matmul(X,W)+b)with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)print('XWb:')    print(sess.run(XWb))    print('y:')    print(sess.run(y ))
XWb:
[[-0.35999998  0.28      ]]
y:
[[0.41095957 0.5695462 ]]

以随机数产生Weight(W)与bais(b)

W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([1, 2]))
X = tf.Variable([[0.4,0.2,0.4]])
y=tf.nn.relu(tf.matmul(X,W)+b)
with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)print('b:')print(sess.run(b ))    print('W:')print(sess.run(W ))print('y:')print(sess.run(y ))    
b:
[[-0.1278446   0.15272076]]
W:
[[ 0.09724175 -0.70408934][ 1.4106061  -0.39071304][-0.74939483 -0.36333686]]
y:
[[0. 0.]]
W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([1, 2]))
X = tf.Variable([[0.4,0.2,0.4]])
y=tf.nn.relu(tf.matmul(X,W)+b)
with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)(_b,_W,_y)=sess.run((b,W,y))#等价于三次seprint('b:')print(_b)print('W:')print(_W)print('y:')print(_y)   
b:
[[-0.5877543  2.1299696]]
W:
[[ 1.0390263   0.5285081 ][-0.92886233 -0.5300881 ][ 0.4078475   0.684533  ]]
y:
[[0.        2.5091684]]
placeholder
W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([1, 2]))
X = tf.placeholder("float", [None,3])
y=tf.nn.relu(tf.matmul(X,W)+b)
with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)X_array = np.array([[0.4,0.2,0.4]])(_b,_W,_X,_y)=sess.run((b,W,X,y),feed_dict={X:X_array})print('b:')print(_b)    print('W:')print(_W)print('X:')print(_X)print('y:')print(_y)
b:
[[-1.00988698 -0.90781182]]
W:
[[ 0.77819425  0.74534345][ 0.62385881 -0.30757746][ 0.84864932  1.10149086]]
X:
[[ 0.40000001  0.2         0.40000001]]
y:
[[ 0.  0.]]
_y.shape
(1, 2)
ts_norm = tf.random_normal([1000])
with tf.Session() as session:norm_data=ts_norm.eval()
print(len(norm_data))
print(norm_data[:30])
1000
[-0.62594283 -1.53080451  0.20968008  0.48862299 -0.98033726  1.568721060.34392843 -0.32248533 -1.38410163 -0.8074798   0.06213726  0.41173849-0.79638833  0.07239912 -1.5461148  -1.4486984   0.5450505   0.37378398-0.23069905 -0.26489291 -1.30195487 -0.18677172  0.50207907 -1.007878420.56418502  0.51869804 -1.74017227 -2.36948991  0.98451078  0.93969965]
import matplotlib.pyplot as plt
plt.hist(norm_data)
plt.show()    

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([1, 2]))
X = tf.placeholder("float", [None,3])
y=tf.nn.sigmoid(tf.matmul(X,W)+b)
with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)X_array = np.array([[0.4,0.2 ,0.4],[0.3,0.4 ,0.5],[0.3,-0.4,0.5]])    (_b,_W,_X,_y)=sess.run((b,W,X,y),feed_dict={X:X_array})print('b:')print(_b)    print('W:')print(_W)print('X:')print(_X)print('y:')print(_y)
b:
[[ 1.3742691 -0.6307982]]
W:
[[-0.25237647  0.28716296][-0.24805067 -0.40259644][ 1.6787063  -1.9441847 ]]
X:
[[ 0.4  0.2  0.4][ 0.3  0.4  0.5][ 0.3 -0.4  0.5]]
y:
[[0.86934626 0.20195402][0.88479966 0.15738963][0.90353453 0.20493953]]

建立layer函数

功能是建立两层神经网络

def layer(output_dim,input_dim,inputs, activation=None):W = tf.Variable(tf.random_normal([input_dim, output_dim]))b = tf.Variable(tf.random_normal([1, output_dim]))XWb = tf.matmul(inputs, W) + bif activation is None:outputs = XWbelse:outputs = activation(XWb)return outputs
X = tf.placeholder("float", [None,4])y=layer(output_dim=3,input_dim=4,inputs=X,activation=tf.nn.relu)with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)X_array = np.array([[0.4,0.2 ,0.4,0.1],[0.3,0.4 ,0.5,0.3],[0.3,-0.4,0.5,0.2]])    (_X,_y)=sess.run((X,y),feed_dict={X:X_array})print('X:')print(_X)print('y:')print(_y)    
X:
[[ 0.4  0.2  0.4  0.1][ 0.3  0.4  0.5  0.3][ 0.3 -0.4  0.5  0.2]]
y:
[[0.         0.79015875 1.5285197 ][0.31821787 1.2630901  1.1021228 ][0.48398763 0.33778787 1.7573613 ]]
X = tf.placeholder("float", [None,4])
h=layer(output_dim=3,input_dim=4,inputs=X,activation=tf.nn.relu)
y=layer(output_dim=2,input_dim=3,inputs=h)
with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)X_array = np.array([[0.4,0.2 ,0.4,0.5]])    (layer_X,layer_h,layer_y)= \sess.run((X,h,y),feed_dict={X:X_array})print('input Layer X:')print(layer_X)print('hidden Layer h:')print(layer_h)print('output Layer y:')print(layer_y)
input Layer X:
[[0.4 0.2 0.4 0.5]]
hidden Layer h:
[[1.5489424  0.         0.63559824]]
output Layer y:
[[3.4448848  0.05538869]]

改进layer函数,使其能返回w和b

def layer_2(output_dim,input_dim,inputs, activation=None):W = tf.Variable(tf.random_normal([input_dim, output_dim]))b = tf.Variable(tf.random_normal([1, output_dim]))XWb = tf.matmul(inputs, W) + bif activation is None:outputs = XWbelse:outputs = activation(XWb)return outputs,W,b
X = tf.placeholder("float", [None,4])
h,W1,b1=layer_debug(output_dim=3,input_dim=4,inputs=X,activation=tf.nn.relu)
y,W2,b2=layer_debug(output_dim=2,input_dim=3,inputs=h)
with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)X_array = np.array([[0.4,0.2 ,0.4,0.5]])    (layer_X,layer_h,layer_y,W1,b1,W2,b2)= \sess.run((X,h,y,W1,b1,W2,b2),feed_dict={X:X_array})print('input Layer X:')print(layer_X)print('W1:')print(  W1)    print('b1:')print(  b1)    print('hidden Layer h:')print(layer_h)    print('W2:')print(  W2)    print('b2:')print(  b2)    print('output Layer y:')print(layer_y)
input Layer X:
[[0.4 0.2 0.4 0.5]]
W1:
[[-2.494698    0.10329538 -0.5353932 ][-1.022263   -1.1610479  -3.0859344 ][ 1.9652166   0.3464464   1.2346822 ][-1.0058508  -0.81840676 -0.9512821 ]]
b1:
[[ 0.1718771   0.93178105 -1.4650283 ]]
hidden Layer h:
[[0.        0.4702648 0.       ]]
W2:
[[ 0.80631006  1.5261457 ][ 0.24046504 -0.08329547][ 0.2570049   0.40859744]]
b2:
[[-0.16517083  0.45186767]]
output Layer y:
[[-0.05208859  0.41269675]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/260384.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路径相关树形dp——最长乘积链

路径相关树形dp——最长乘积链 问题描述 给定一棵树,树中包含n个结点,编号为1~n,以及n- 1条无向边,每条边都有一个权值。 现从树中任选一个点, 从该点出发,在不走回头路的情况下找出二条到其他点的路径&…

keil5代码复制下来中文乱码

在keil5中,显示正常,如果复制到其他编辑器,中文部分就乱码。 keil5中显示正常 复制到其他编辑器,中文乱码。 原因:编码格式不一样 解决办法:keil5中重新设置一下。 左边选择Edit,下面选择Conf…

第3.3章:StarRocks数据导入--Stream Load

一、概述 Stream Load是StarRocks常见的数据导入方式,用户通过发送HTTP请求将本地文件或数据流导入至StarRocks中,该导入方式不依赖其他组件。 Stream Load作是一种同步导入方式,可以直接通过请求的返回值判断导入是否成功,无法手…

考PMP真的有用吗?

在你决定考证之前,值得思考的是为什么要追求这个证书。是因为公司的需求?个人职业发展?还是受到了新闻报道或广告的影响,觉得PMP证书有价值,只是出于好奇想了解一下。这种情况下,很多人可能会表示&#xff…

idea代码review工具Code Review Helper使用介绍

之前在团队里面遇到一个关于代码review的问题,使用gitlab自己的还是facebook的Phabricator,很难看到整体逻辑,因为业务逻辑代码可能不在这次改动范围内,在去源库中找不好找。针对这个刚需,在网上找了一个idea的代码工具…

设计模式简介

设计模式介绍: 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four(GoF)的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创…

openGauss 5.0.0全密态数据库应用小试

前言 openGauss HCIA教材中,安全是一个重要的章节,在实际项目中,随着网络安全和信息安全形势的变化,企业也越来越重视数据库安全。去年在HALP内部进行openGauss培训时,安全特性就被学员们提出来要重点讲解&#xff0c…

如何使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问

文章目录 1. 安装Docker2. 本地安装部署YesPlayMusic3. 安装cpolar内网穿透4. 固定YesPlayMusic公网地址 本篇文章讲解如何使用Docker搭建YesPlayMusic网易云音乐播放器,并且结合cpolar内网穿透实现公网访问音乐播放器。 YesPlayMusic是一款优秀的个人音乐播放器&am…

Pandas数据库大揭秘:read_sql、to_sql 参数详解与实战篇【第81篇—Pandas数据库】

Pandas数据库大揭秘:read_sql、to_sql 参数详解与实战篇 Pandas是Python中一流的数据处理库,而数据库则是数据存储和管理的核心。将两者结合使用,可以方便地实现数据的导入、导出和分析。本文将深入探讨Pandas中用于与数据库交互的两个关键方…

【Go语言】Go项目工程管理

GO 项目工程管理(Go Modules) Go 1.11 版本开始,官方提供了 Go Modules 进行项目管理,Go 1.13开始,Go项目默认使用 Go Modules 进行项目管理。 使用 Go Modules的好处是不再需要依赖 GOPATH,可以在任意位…

JS逆向进阶篇【去哪儿旅行登录】【中篇-滑动轨迹破解补浏览器环境破参数】

目录: 每篇前言:0、整体分析1、逆向轨迹snapshot(1)分析:(2)Python轨迹生成:(3)AES加密:(4)轨迹加密:&#xf…

机器学习中梯度下降法的缺点

机器学习中的梯度下降法是一种寻找函数最小值的优化算法,广泛应用于训练各种模型,尤其是在深度学习中。尽管其应用广泛,但梯度下降法也存在一些不可忽视的缺点: 1. 局部最小值和鞍点 局部最小值问题: 对于非凸函数&a…

milvus insert数据在s3的存储

insert数据在s3的存储 对segment进行flush操作,会将数据持久化至s3对象存储。 相关核心代码位置: ibNode.flushManager.flushBufferData()主要代码在flushBufferData()函数。 代码位置:internal\datanode\flush_manager.go // flushBufferData notifies flush …

【Docker】Docker存储卷

文章目录 一、什么是存储卷二、为什么需要存储卷三、存储卷分类四、管理卷Volume创建卷方式一:Volume 命令操作方式二:-v 或者--mount 指定方式三:Dockerfile 匿名卷 操作案例Docker 命令创建管理卷Docker -v 创建管理卷Docker mount 创建管理…

java中容易被忽视的toString()方法

之前一直认为toString就是将数据转换成字符类型,直到最近写出了一个bug才对toString有了新的认识 不同数据类型,toString() 有不同的操作 定义一个student类,包含姓名 String类型、性别 String类型、年龄 int 类型、分数列表 String类型的li…

适合tiktok运营的云手机需要满足什么条件?

TikTok作为一款全球热门的社交媒体平台,具有无限的市场潜力。然而,卖家在运营过程中常常会面临到视频0播、账号被降权、限流等问题,甚至可能因为多人同时使用一个IP而导致封号的风险。为了规避这些问题,越来越多的卖家将目光投向了…

论UI的糟糕设计:以百度网盘为例

上面这一排鼠标一经过就会弹出来(不是点才弹出来),然后挡住你的各种操作, 弹出来时你就必须等它消失,卡一下才能操作。 在用户顺畅地操作内容时,经常就卡一下、卡一下、卡一下…… 1、比如鼠标从下到上&am…

《基于CEEMDAN一小波包自适应阈值混凝土声发射信号降噪研究》算法思路笔记

![1]杨智中,林军志,汪魁等.基于CEEMDAN-小波包自适应阈值混凝土声发射信号降噪研究[J].振动与冲击,2023,42(03):139-149.DOI:10.13465/j.cnki.jvs.2023.03.016.](https://img-blog.csdnimg.cn/direct/9814ff64cc474cd3aa06ecaea60f2f75.png) 首先对周期循环荷载作用下混凝土试…

【RPG Maker MV 仿新仙剑 战斗场景UI (二)】

RPG Maker MV 仿新仙剑 战斗场景UI 二 战斗指令菜单原仙剑战斗指令图RMMV战斗指令对应代码战斗指令菜单代码效果 战斗指令菜单 原仙剑战斗指令菜单是使用方向键控制,同时按照使用情况正好对应四个指令和四个方向,同时没有选中的菜单用黑色透明图片覆盖&…

App启动优化笔记 1

app大致的启动流程。有Launcher进程,system_server进程,zygote进程,APP进程。 Launcher进程:启动activity来启动应用 system_server进程:(ams是其中的一个binder):发送一个socket消息给Zygote。 zygote进程:收到消息后,fork新的进程,---》app进程启动 APP进程:…