用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.mzph.cn/news/685675.shtml

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

相关文章

电源管理芯片是指在电子设备系统中,负责对电能的变换、分配、检测等进行管理的芯片

萨科微半导体宋仕强介绍说,电源管理芯片是指在电子设备系统中,负责对电能的变换、分配、检测等进行管理的芯片,其性能和可靠性直接影响电子设备的工作效率和使用寿命,是电子设备中的关键器件。萨科微slkor(www.slkormi…

人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析

今天分享的是人工智能系列深度研究报告:《人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析》。 (报告出品方:埃森哲) 报告共计:32页 自智网络驱动的电信产业变革 经过多年的…

电商小程序08调用缓存

目录 1 将信息存入缓存中2 获取登录信息3 退出登录4 发布预览总结 小程序的登录功能里,如果只是将登录信息保存到全局变量中,存在的问题是如果小程序重新打开,用户的登录状态就丢失了。为了解决这个问题,我们需要用到微搭的缓存的…

云计算基础-快照与克隆

快照及克隆 什么是快照 快照是数据存储的某一时刻的状态记录,也就是把虚拟机当前的状态保存下来(快照不是备份,快照保存的是状态,备份保存的是副本) 快照优点 速度快,占用空间小 快照工作原理 在了解快照原理前,…

文生图提示词:天气条件

天气和气候 --天气条件 Weather Conditions 涵盖了从基本的天气类型到复杂的气象现象,为描述不同的天气和气候条件提供了丰富的词汇。 Sunny 晴朗 Cloudy 多云 Overcast 阴天 Partly Cloudy 局部多云 Clear 清晰 Foggy 雾 Misty 薄雾 Hazy 朦胧 Rainy 下雨 Showers …

【C++】实现Date类的各种运算符重载

上一篇文章只实现了operator操作符重载&#xff0c;由于运算符较多&#xff0c;该篇文章单独实现剩余所有的运算符重载。继续以Date类为例&#xff0c;实现运算符重载&#xff1a; 1.Date.h #pragma once#include <iostream> #include <assert.h>using namespace …

Leecode之面试题消失的数字

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 方法有很多,这里将两种时间复杂度为O(N)的方法 二.思路引入 第一种方法 先将0-n的总和求出来,在求出数组的总和,在做差就能得到消失的数字,不过要注意的是数据有可能溢出,这个方法很简单就不再…

【MySQL】Java的JDBC编程

数据库编程 1. 数据库编程的必备条件2. Java的数据库编程&#xff1a;JDBC3. JDBC工作原理4. JDBC使用4.1 JDBC开发案例4.2 JDBC使用步骤总结 5. JDBC常用接口和类5.1 JDBC API5.2 数据库连接Connection5.3 Statement对象5.4 ResultSet对象 面试问答&#xff1a; 1. 数据库编程…

腾讯云幻兽帕鲁服务器配置怎么选择合适?

腾讯云幻兽帕鲁服务器配置怎么选&#xff1f;根据玩家数量选择CPU内存配置&#xff0c;4到8人选择4核16G、10到20人玩家选择8核32G、2到4人选择4核8G、32人选择16核64G配置&#xff0c;腾讯云百科txybk.com来详细说下腾讯云幻兽帕鲁专用服务器CPU内存带宽配置选择方法&#xff…

如何在CSS中实现背景图片的渐变?

--引言 在CSS中&#xff0c;实现背景图片的渐变通常需要使用linear-gradient或者radial-gradient函数&#xff0c;这些函数可以与背景图像一起使用来创建渐变效果。然而&#xff0c;CSS的渐变并不直接支持使用图像作为渐变的颜色停止点。但你可以通过一些技巧来实现类似的效果…

MySQL篇----第十九篇

系列文章目录 文章目录 系列文章目录前言一、什么是存储过程?用什么来调用?二、如何通俗地理解三个范式?三、什么是基本表?什么是视图?四、试述视图的优点?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

Linux项目自动化构建工具-make/Makefile

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 背景 理解 实例代码 依赖关系 依赖方法 原理 项目清理 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升起的太阳&#xff0c;一种是正在努力学习编程…

Ansible fetch 模块 该模块用于从远程某主机获取(复制)文件到本地

这里写目录标题 参数实例查看返回结果在这里插入图片描述 参数 dest&#xff1a;用来存放文件的目录 src&#xff1a;在远程拉取的文件&#xff0c;并且必须是一个file&#xff0c;不能是**目录* 实例 ansible slave -m fetch -a src/data/hello.txt dest/data/可以看到一个…

Chat with RTX 安装

1、Chat With RTX 介绍 Chat With RTX 是一个 Demo&#xff0c;用来将您自己的资料&#xff08;文档、笔记、视频或其他数据&#xff09;与大语言模型建立连接&#xff0c;从而令 LLM 更具个性化。利用检索增强生成 (RAG)、TensorRT-LLM 和 RTX 加速&#xff0c;您可以与自定义…

ChatGPT绘图指南:DALL.E3玩法大全(一)

一、 DALLE.3 模型介绍 1、什么是 DALLE.3 模型&#xff1f; DALLE-3模型&#xff0c;是一种由OpenAI研发的技术&#xff0c;它是一种先进的生成模型&#xff0c;可以将文字描述转化为清晰的图片。这种模型的名称"DALLE"实际上是"Deep Auto-regressive Latent …

让每次生成的随机数都相同np.random.seed()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 让每次生成的随机数都相同 np.random.seed() 选择题 关于以下代码输出的结果说法正确的是&#xff1f; import numpy as np np.random.seed(0) print(【执行】print(np.random.rand(3))) prin…

EXTI外部中断

&#xff1f; 难点&#xff1a;中断向量表、看门狗、NVIC的优先级位&#xff1f;EXTI框图&#xff1f; ------------------------ 中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;--->例如&#xff1a;…

C++初阶(十二) stack和queue

一、stack的介绍和使用 1.1 stack的介绍 stack的文档介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作…

python_django高校运动会成绩管理系统4o4c3

田径运动会报名管理系统就是给学生进行网上报名&#xff0c;管理员管理报名信息的一种通用管理平台&#xff0c;从而方便管理人员对运动会的日常报名工作的管理。本系统的前台功能模块包括系统的基本操作、最新公告、运动项目和报名项目&#xff1b;系统的后台功能模块包括系统…

Ubuntu忘记登录密码重置步骤

Ubuntu忘记登录密码重置步骤 1.开机界面长按shitf键&#xff0c;进入grub&#xff0c;并选择Advanced options for ubuntu&#xff0c;按下回车 2.选择一个较新版本的recovery mode&#xff0c;按下回车 3.会跑一些数据&#xff0c;等待跑完后会出现下面的界面&#xff0c;选择…