用tensorflow实现简单的全连接层网络

2023-11-01

参考网上给的例程使用tensorflow实现了一个简单的全连接层网络的搭建。训练一个神经网络匹配二元函数y=x^{2}-0.5

步骤主要如下:

  • 导入相应的包
  • 定义添加层
  • 准备训练数据
  • 构建神经网络层
  • 定义损失函数和训练优化使损失函数最小化
  • 初始化变量,激活结构
  • 迭代训练

1、首先导入相应的包,有tensorflow、numpy

import tensorflow as tf
import numpy as np

2.然后是定义添加层add_layer

def add_layer(inputs,in_size,out_size,activation_function=None):
    w = tf.Variable(tf.random_normal([in_size,out_size]))
    b = tf.Variable(tf.zeros([1,out_size])+0.1)
    f = tf.matmul(inputs,w)+b
    if activation_function is None:
        outputs = f
    else:
        outputs = activation_function(f)
    return outputs

用tf.Variable定义变量权重w和偏置量b,w定义为大小是输入尺寸X输出尺寸的矩阵,初始化为随机正态分布。b定义为大小是1X输出尺寸的矩阵,初始化为0.1 。可以选择是否需要激励函数。

3.准备训练数据

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]
noise = np.random.normal(0,0.05,x_data.shape)
y_data = np.square(x_data)-0.5+noise

np.linspaces用来创建一个等差数列,最小值是-1,最大值是1,一共有300个数据。

np.newaxis为numpy.ndarray(多维数组)增加了一个轴,np.newaxis在功能上等同于None,np.newaxis = None。那么x_data.shape=[300,1]。

准备训练数据y=x^{2}-0.5+noise,噪声noise遵循随机正态分布(均值为0,方差为0.5),尺寸与输入x相同。

4.定义节点准备接收数据

xs = tf.placeholder(tf.float32,[None,1])
ys = tf.placeholder(tf.float32,[None,1])

placeholder的作用是提供输入数据的空位,实际问题产生的原始数据丢入到placeholder中,然后被一个叫feed_dict的对象收集到TensorFlow当中,再交给神经网络去处理得到一个预测结果。placeholder就是是原始数据的入口。

因为目前不知道输入和输出x、y有多少个数据,因此尺寸为[None,1]。

5.构建神经网络层

l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)
prediction = add_layer(l1,10,1,activation_function=None)

神经网络只有两层,一层输入一层输出。第一层输入是1输出是10,使用relu=max(0,x)激活函数。输出层输入是上一层的输出,输入是10,输出是1即预测的y值,不使用激活函数。

6.损失函数

loss = tf.reduce_mean(tf.reduce_sum(tf.square(y_data-prediction),reduction_indices=[1]))

采用均方差定义损失函数:y=\frac{1}{n_{samples}}\sum_{i-1}^{n}(y_{i}-\hat{y_{i}})^{2}

7.训练优化损失函数

train = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

选择最基本的优化器Gradient Descent,设置学习率为0.1。

8.初始化及激活

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

用tf.global_variables_initializer()初始化全部变量。然后要把结构激活,Session是个对象要记得首字母要大写,它就像一个指针一样指向要执行的地方。

9.迭代训练

for i in range(1000):
    sess.run(train,feed_dict={xs:x_data,ys:y_data})
    if(i%50==0):
        print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

迭代训练1000次优化神经网络,使用feed_dict将实际数据收集起来输入网络。没迭代50次就打印输出损失结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用tensorflow实现简单的全连接层网络 的相关文章

  • iTerm2使用笔记

    鼠标 设置在less vim中等使用滚轮 在高级设置里面 设置系统编辑方式 让写命令和在其他编辑器中一致 比如alt delete 删除一个word vim vimrc中设置系统clipboard set clipboard unnamed
  • 机器人学习--卡尔曼滤波及各种滤波解析

    什么是滤波 举个最直观的简单例子 臭水沟里舀一大勺水 需要过滤成干净水怎么办 用滤网 网孔可根据需要选择大小孔 过滤 在电路方面波形的高低通滤波原理类似 图像上的噪声点各种中值滤波等类似的滤波方案 Filter 在状态测量领域是根据 预测
  • webpack 和 ts 简单配置及使用

    如何使用webpack 与 ts结合使用 新建项目 执行项目初始化 npm init y 会生成 name tsdemo01 version 1 0 0 description main index js scripts test echo
  • Notion 的插件介绍和使用

    十分推荐 Save to Notion Notion Web Clipper notion 官方的剪藏插件 插件安装 Chrome 商店 https chrome google com webstore detail notion web
  • 看完这篇 教你玩转渗透测试靶机vulnhub——DC8

    Vulnhub靶机DC8渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 暴力破解 提权 获取flag Vulnhub靶机渗透总结 Vulnhub靶机介绍 vulnh
  • keil仿真调试报错

    问题 程序能正常下载 但是keil仿真调试报错 进入仿真程序就在全速运行了 此时什么都干不了 查看command窗口日志信息会发现有报错 jlink error cpu is not halted 然后点击reset按钮会退出全速仿真 所有
  • 一个自己用的opencv历程

    include
  • 设两个栈(stack1,stack2)共享一个一维数组空间s[m],怎么最大限度地利用数组空间

    可以利用扩充栈操作 在传统的双端栈中 两个栈之间存在一种制约关系 两个栈中的元素总数最大可以达到M 如果一个栈中的元素较多 那么另一个栈中的元素就较少 两个栈中的元素总和超不过M 它主要利用了栈的 栈底位置不变 而栈顶位置动态变化 的特性
  • jquery 读取 解析 四级的xml文件 案例

    答案 jQuery 可以很容易地使用 AJAX 技术来解析 XML 文件 下面是一个案例 ajax type GET url yourXMLFile xml dataType xml success function xml xml fin
  • python day55

    今日内容 如何写一个测试脚本 创建一个test py文件 from django test import TestCase Create your tests here import os if name main os environ s
  • unity shader中的矩阵变换知识

    提要 在图形的计算中 比如旋转 缩放 平移 投影等操作 矩阵都扮演着极其重要的角色 它是操作图元的基本工具 虽然很多的图形API已经封装好了这些矩阵操作 但是理解这些矩阵操作的原理会非常非常有帮助 比如说我们可以通过一些矩阵的快捷计算来加速
  • Windows下切换进程用户名为当前用户名,而不是SYSTEM

    在windows操作系统中 某些情况下 我们需要将程序以管理员身份启动 通过任务管理器我们可以看到程序的持有者 如下图所示 使用SYSYTEM权限启动的程序 理论是不可以访问到当前用户下的部分目录 这个时候我们可以在必要时候切换成武到当前用
  • HTML+CSS项目案例

    文章目录 1 表格练习 2 文本样式练习 3 图片标签练习 4 盒子模型练习一 5 盒子模型练习二 6 盒子模型练习三 7 浮动练习 8 边框练习一 9 边框练习二 10 图文混排 11 列表练习 1 表格练习 案例演示 table tr
  • [数据库与软件工程]三、关系运算(并、交、笛卡尔积,自然连接等)

    目录 一 前言 二 简单的关系运算 并 交 差 并 Union 交 Intersection 差 三 复杂的关系运算 笛卡尔积 自然连接 一 笛卡尔积的数学定义 二 关系运算中的笛卡尔积 1 笛卡尔积是什么 2 如果两个关系有同名属性怎么计
  • 2023华为od机试统一考试B卷【增强字符串】

    前言 本题使用的Java语言 如果需要python语言 请参考以下链接 python版本题解 题目描述 请你实现一个增强版的strstr函数 他的功能是使用带有可选段的字符串进行模糊查询 与strstr函数相同 该函数在源字符串中查找第一次
  • 数组实现动态的原理

    重新申请一个二倍大小的数组 然后拷贝过去
  • “陷阱”病毒源代码大揭密

    7月初在我国出现了一种名叫 陷阱 Trap 的新型恶性病毒 并在7月5日全面爆发 目前国内已有不少的网站和用户遭受 陷阱 的袭击 造成网络系统瘫痪 文件丟失现象严重 该病毒是一种网络脚本语言病毒 并是同时使用了VBScript 和 Java
  • Android Q深色模式及源码解析,实战解析

    frameworks base libs hwui renderthread RenderProxy cpp void RenderProxy setForceDark bool enable mRenderThread queue pos
  • 实际用户ID,有效用户ID及设置用户ID

    实际用户ID 有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念 但一直没有好好去理清这几个概念 以致对这几个概念一直一知半解 今天好好区分了一下这几个概念并总结如下 说白了这几个UID引出都是为了系统的权限管理 下面分别
  • QT自定义QTableWidget

    目录 QT自定义QTableWidget 1 实现效果 2 具体实现 1 表格QTabelWidget 2 表头QHeaderView 3 插入数据 QT自定义QTableWidget 1 实现效果 2 具体实现 1 表格QTabelWid

随机推荐

  • 接口性能测试 —— Jmeter并发与持续性压测

    接口压测的方式 1 同时并发 设置线程组 执行时间 循环次数 这种方式可以控制接口请求的次数 2 持续压测 设置线程组 循环次数 勾选 永远 调度器 持续时间 这种方式可以控制压测周期时间 指定并发数 例1 设置线程数 10设置执行时间 0
  • WPF的MVVM框架Stylet开发文档 19. 杂项

    19 杂项 19 1标示值 文档地址 有时候你想要展示一个对象给用户 但是想要为它关联一个自定义的 字符串 标签 这个标签会在你的视图中显示 于是你创建了一个简单的类来包装你的对象 并附加这个标签 然后你会想要重写 ToString 以便你
  • 推荐系统指标——Hit Ratio(HR)

    我现在读过的文献里有两种定义 第一种 Deep Collaborative Filtering with Multi Aspect Information in Heterogeneous Networks 中提到的 原文中提到 where
  • 2023,你了解Kafka吗?深入详解

    消息队列的核心价值 解耦合 异步处理 例如电商平台 秒杀活动 一般流程会分为 1 风险控制 2 库存锁定 3 生成订单 4 短信通知 5 更新数据 通过消息系统将秒杀活动业务拆分开 将不急需处理的业务放在后面慢慢处理 流程改为 1 风险控制
  • IntelliJ IDEA在java开发工作中的使用总结(实用插件,快捷键,debug等)

    今天总结一下idea在工作中一些实用的小技巧 记得多少学多少 之后会继续更新补充 如果您有一些小技巧 插件 也欢迎在评论区中分享出来 1 插件篇 1 Alibaba java coding Guidelines 阿里代码规范 这个插件可以帮
  • MODBUS-RTU通讯协议简介

    MODBUS RTU通讯协议简介 什么是MODBUS MODBUS 是MODICON公司最先倡导的一种软的通讯规约 经过大多数公司 的实际应用 逐渐被认可 成为一种标准的通讯规约 只要按照这种规约进行 数据通讯或传输 不同的系统就可以通讯
  • plsql中函数调用java

    一 plsql中函数调用java 1 在plsql中先写一个函数 create or replace function test create id return number is language java name Generator
  • 机器学习之集成学习算法

    一 集成学习算法简介 1 1 什么是集成学习 集成学习通过建立几个模型来解决单一预测问题 它的工作原理是生成多个分类器 模型 各自独立地学习和作出预测 这些预测最后结合成组合预测 因此优于任何一个单分类的做出预测 1 2 复习 机器学习的两
  • JQUERY点击滚动到锚点

    document ready function a topLink click function html body animate scrollTop this attr href offset top px duration 500 e
  • jwt安全问题

    文章目录 jwt安全问题 jwt简介 jwt组成 header payload signature 潜在漏洞 空加密算法 web346 密钥爆破 web348 敏感信息泄露 web349 修改算法RS256为HS256 web350 jwt
  • Java String的split方法总结

    String的split 方法用于按传入的字符或字符串对String进行拆分 返回拆分之后的数组 1 一般用法 用一般的字符 例如 或 等符号做分隔符时 String address 上海 上海市 闵行区 吴中路 String splitA
  • 为分布式做准备吧——从Ajax到WebSocket

    文章目录 解决方案1 频繁轮询 解决方案2 长轮询 解决方案3 分块编码 解决方案4 Applet和Adobe Flash WebSocket 当需要前端频繁的请求后端数据的时候 比如说数据的实时显示 这种情况下产生问题的核心原因是 服务器
  • 前端性能测试工具Lighthouse

    在前端开发中 对于自己开发的app或者web page性能的好坏 一直是让前端开发很在意的话题 我们需要专业的网站测试工具 让我们知道自己的网页还有哪些需要更为优化的方面 现在推荐一款工具 Lighthouse 可以分析web应用程序和we
  • 三位数除以两位数竖式计算没有余数_四年级上册数学第六单元知识梳理,附一两位数除多位数计算...

    四年级上册第六单元知识梳理 复习 一位数除多位数 1 相同数位对齐 从最高位除起 除到哪一位就把商写在那一位的上面 如果被除数最高位比除数小就要看被除数的前两位 除到哪一位就把商写在那一位的上面 每次除得的余数必须比除数小 2 0除以任何不
  • OLED显示小数

    OLED显示小数并不是很难的 在通用的OLED库中是没有显示小数的 需要自己去写 写的方法大致是这样的 写出0到9的ACSLL值 只需要将小数点后面的位数 一位一位的写数字对应的ACSLL值即可 其中小数点 也是写同样对应的ACSLL值 只
  • 基于Matlab的拉普拉斯滤波图像增强

    基于Matlab的拉普拉斯滤波图像增强 图像增强是数字图像处理中一项非常重要的任务 旨在提高图像的观感或可用性 而拉普拉斯滤波是图像增强中的一种方法 通过对图像进行滤波以减少噪声和增加图像的对比度和清晰度 本文将介绍如何使用Matlab实现
  • 玩转Openwrt(一) — 刷入带ADSL驱动的全功能版本

    之前家里用的一直USR9108加上自己编译修改的内核及软件配合自己整的VIA小板子动物机 可是编译移植那真是叫一个痛苦 各种补丁各种依赖关系 实在头大 费时费力 而且还有那个悲催的USB1 1 那速度真叫认抓狂 我的移动硬盘插上基本就是个摆
  • 如何对jar包进行安全扫呢,用dependency-check工具吧

    工具下载地址 https github com jeremylong DependencyCheck 点击Releases 下载 https owasp org www project dependency check 点击Command
  • 【Ansible故障解决】使用Ansible连接被控端SSH拒绝解决办法

    Ansible故障解决 使用Ansible连接被控端SSH拒绝解决办法 一 Ansible连通性检查 二 手动SSH登录 三 检查被控端sshd conf 四 检查被控端ssh服务启用 五 检查相关文件目录权限 六 检查被控端公私钥是否正常
  • 用tensorflow实现简单的全连接层网络

    参考网上给的例程使用tensorflow实现了一个简单的全连接层网络的搭建 训练一个神经网络匹配二元函数 步骤主要如下 导入相应的包 定义添加层 准备训练数据 构建神经网络层 定义损失函数和训练优化使损失函数最小化 初始化变量 激活结构 迭