【深度学习】实验07 使用TensorFlow完成逻辑回归
文章目录
- 使用TensorFlow完成逻辑回归
- 1. 环境设定
- 2. 数据读取
- 3. 准备好placeholder
- 4. 准备好参数/权重
- 5. 计算多分类softmax的loss function
- 6. 准备好optimizer
- 7. 在session里执行graph里定义的运算
- 附:系列文章
使用TensorFlow完成逻辑回归
TensorFlow是一种开源的机器学习框架,由Google Brain团队于2015年开发。它被广泛应用于图像和语音识别、自然语言处理、推荐系统等领域。
TensorFlow的核心是用于计算的数据流图。在数据流图中,节点表示数学操作,边表示张量(多维数组)。将操作和数据组合在一起的数据流图可以使 TensorFlow 对复杂的数学模型进行优化,同时支持分布式计算。
TensorFlow提供了Python,C++,Java,Go等多种编程语言的接口,让开发者可以更便捷地使用TensorFlow构建和训练深度学习模型。此外,TensorFlow还具有丰富的工具和库,包括TensorBoard可视化工具、TensorFlow Serving用于生产环境的模型服务、Keras高层封装API等。
TensorFlow已经发展出了许多优秀的模型,如卷积神经网络、循环神经网络、生成对抗网络等。这些模型已经在许多领域取得了优秀的成果,如图像识别、语音识别、自然语言处理等。
除了开源的TensorFlow,Google还推出了基于TensorFlow的云端机器学习平台Google Cloud ML,为用户提供了更便捷的训练和部署机器学习模型的服务。
解决分类问题里最普遍的baseline model就是逻辑回归,简单同时可解释性好,使得它大受欢迎,我们来用tensorflow完成这个模型的搭建。
1. 环境设定
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'import warnings
warnings.filterwarnings("ignore")import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import time
2. 数据读取
#使用tensorflow自带的工具加载MNIST手写数字集合
mnist = input_data.read_data_sets('./data/mnist', one_hot=True)
Extracting ./data/mnist/train-images-idx3-ubyte.gz
Extracting ./data/mnist/train-labels-idx1-ubyte.gz
Extracting ./data/mnist/t10k-images-idx3-ubyte.gz
Extracting ./data/mnist/t10k-labels-idx1-ubyte.gz
#查看一下数据维度
mnist.train.images.shape
(55000, 784)
#查看target维度
mnist.train.labels.shape
(55000, 10)
3. 准备好placeholder
batch_size = 128
X = tf.placeholder(tf.float32, [batch_size, 784], name='X_placeholder')
Y = tf.placeholder(tf.int32, [batch_size, 10], name='Y_placeholder')
4. 准备好参数/权重
w = tf.Variable(tf.random_normal(shape=[784, 10], stddev=0.01), name='weights')
b = tf.Variable(tf.zeros([1, 10]), name="bias")
logits = tf.matmul(X, w) + b
5. 计算多分类softmax的loss function
# 求交叉熵损失
entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y, name='loss')
# 求平均
loss = tf.reduce_mean(entropy)
6. 准备好optimizer
这里的最优化用的是随机梯度下降,我们可以选择AdamOptimizer这样的优化器
learning_rate = 0.01
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss)
7. 在session里执行graph里定义的运算
#迭代总轮次
n_epochs = 30with tf.Session() as sess:# 在Tensorboard里可以看到图的结构writer = tf.summary.FileWriter('../graphs/logistic_reg', sess.graph)start_time = time.time()sess.run(tf.global_variables_initializer()) n_batches = int(mnist.train.num_examples/batch_size)for i in range(n_epochs): # 迭代这么多轮total_loss = 0for _ in range(n_batches):X_batch, Y_batch = mnist.train.next_batch(batch_size)_, loss_batch = sess.run([optimizer, loss], feed_dict={X: X_batch, Y:Y_batch}) total_loss += loss_batchprint('Average loss epoch {0}: {1}'.format(i, total_loss/n_batches))print('Total time: {0} seconds'.format(time.time() - start_time))print('Optimization Finished!')# 测试模型preds = tf.nn.softmax(logits)correct_preds = tf.equal(tf.argmax(preds, 1), tf.argmax(Y, 1))accuracy = tf.reduce_sum(tf.cast(correct_preds, tf.float32))n_batches = int(mnist.test.num_examples/batch_size)total_correct_preds = 0for i in range(n_batches):X_batch, Y_batch = mnist.test.next_batch(batch_size)accuracy_batch = sess.run([accuracy], feed_dict={X: X_batch, Y:Y_batch}) total_correct_preds += accuracy_batch[0]print('Accuracy {0}'.format(total_correct_preds/mnist.test.num_examples))writer.close()
Average loss epoch 0: 0.36748782022571785 Average loss epoch 1: 0.2978815356126198 Average loss epoch 2: 0.27840628396797845 Average loss epoch 3: 0.2783186247437706 Average loss epoch 4: 0.2783641471138923 Average loss epoch 5: 0.2750668214473413 Average loss epoch 6: 0.2687560408126502 Average loss epoch 7: 0.2713795114126239 Average loss epoch 8: 0.2657588795522154 Average loss epoch 9: 0.26322007090686916 Average loss epoch 10: 0.26289192279735646 Average loss epoch 11: 0.26248606019989873 Average loss epoch 12: 0.2604622903056356 Average loss epoch 13: 0.26015280702939403 Average loss epoch 14: 0.2581879366319496 Average loss epoch 15: 0.2590309207117085 Average loss epoch 16: 0.2630510463581219 Average loss epoch 17: 0.25501730025578767 Average loss epoch 18: 0.2547102673000945 Average loss epoch 19: 0.258298404375851 Average loss epoch 20: 0.2549241428330784 Average loss epoch 21: 0.2546788509283866 Average loss epoch 22: 0.259556887067837 Average loss epoch 23: 0.25428259843365575 Average loss epoch 24: 0.25442713139565676 Average loss epoch 25: 0.2553852511383159 Average loss epoch 26: 0.2503043229415978 Average loss epoch 27: 0.25468004046828596 Average loss epoch 28: 0.2552785321479633 Average loss epoch 29: 0.2506257003663859 Total time: 28.603315353393555 seconds Optimization Finished! Accuracy 0.9187
附:系列文章
序号 | 文章目录 | 直达链接 |
---|---|---|
1 | 波士顿房价预测 | https://want595.blog.csdn.net/article/details/132181950 |
2 | 鸢尾花数据集分析 | https://want595.blog.csdn.net/article/details/132182057 |
3 | 特征处理 | https://want595.blog.csdn.net/article/details/132182165 |
4 | 交叉验证 | https://want595.blog.csdn.net/article/details/132182238 |
5 | 构造神经网络示例 | https://want595.blog.csdn.net/article/details/132182341 |
6 | 使用TensorFlow完成线性回归 | https://want595.blog.csdn.net/article/details/132182417 |
7 | 使用TensorFlow完成逻辑回归 | https://want595.blog.csdn.net/article/details/132182496 |
8 | TensorBoard案例 | https://want595.blog.csdn.net/article/details/132182584 |
9 | 使用Keras完成线性回归 | https://want595.blog.csdn.net/article/details/132182723 |
10 | 使用Keras完成逻辑回归 | https://want595.blog.csdn.net/article/details/132182795 |
11 | 使用Keras预训练模型完成猫狗识别 | https://want595.blog.csdn.net/article/details/132243928 |
12 | 使用PyTorch训练模型 | https://want595.blog.csdn.net/article/details/132243989 |
13 | 使用Dropout抑制过拟合 | https://want595.blog.csdn.net/article/details/132244111 |
14 | 使用CNN完成MNIST手写体识别(TensorFlow) | https://want595.blog.csdn.net/article/details/132244499 |
15 | 使用CNN完成MNIST手写体识别(Keras) | https://want595.blog.csdn.net/article/details/132244552 |
16 | 使用CNN完成MNIST手写体识别(PyTorch) | https://want595.blog.csdn.net/article/details/132244641 |
17 | 使用GAN生成手写数字样本 | https://want595.blog.csdn.net/article/details/132244764 |
18 | 自然语言处理 | https://want595.blog.csdn.net/article/details/132276591 |
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习】实验07 使用TensorFlow完成逻辑回归
文章目录 使用TensorFlow完成逻辑回归1. 环境设定2. 数据读取3. 准备好placeholder4. 准备好参数/权重5. 计算多分类softmax的loss function6. 准备好optimizer7. 在session里执行graph里定义的运算 附:系列文章 使用TensorFlow完成逻辑回归 TensorFlow是一种开源的…...
![](https://img-blog.csdnimg.cn/bed3a331dbb24f978dc8d5331b86c06c.png)
2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本
一、原生的读取版本接口是/proc/version,我这里需要提供获取固件版本号的api给app,因为版本号会经常需要修改,如果每次都到kernel下修改比较麻烦,我这里是想在编译脚本里面对版本号进行修改,这样方便一点。 二、主要修…...
![](https://www.ngui.cc/images/no-images.jpg)
Python操作Excel实战:Excel行转列
# 1、原始数据准备 样例数据准备 地区1m2-5m6-10m11-20m21-40m地区单价计费单位费用最小值费用最大值北京13012011010090 天津13012011010090 石家庄13012011010090 保定140130120110100 张家口170150130120110 邢台1401201101…...
![](https://www.ngui.cc/images/no-images.jpg)
java实现迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供一种方法来顺序访问一个聚合对象(如列表、集合、数组等)中的元素,而不暴露聚合对象的内部表示。迭代器模式通常包括以下角色:迭代器&a…...
![](https://img-blog.csdnimg.cn/65e817c43a9948cab39b1f4b0af27c21.png)
C++day7模板、异常、auto关键字、lambda表达式、数据类型转换、STL、list、文件操作
作业 封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个) 再把该容器中的对象,保存到文件中。 再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。 #include …...
![](https://img-blog.csdnimg.cn/14cccdea432b476faf27fc36b4338793.png)
【校招VIP】产品分析之活动策划宣传
考点介绍: 产品的上线运营是非常重要的。应该来说好的产品都是运营出来的,在一运营过程中难免会依靠策划活动来提高产品知名度、用户数。用户粘度等等指标一,如何策划一个成功的活动就显得非常重要。 产品分析之活动策划宣传-相关题目及解析…...
![](https://www.ngui.cc/images/no-images.jpg)
node基础之一:fs 模块
概念:文件的创建、删除、重命名、移动、写入、读取等 const fs require("fs");// 写入 fs.writeFile("./demo.txt", "hello", (err) > {}); fs.writeFileSync();// 追加 fs.appendFile("./demo.txt", "hello&quo…...
![](https://img-blog.csdnimg.cn/img_convert/9d23bed118cdd61eb92fb821d3a871b4.jpeg)
如何快速搭建母婴行业的微信小程序?
如果你想为你的母婴行业打造一个独特的小程序,但没有任何编程经验,别担心!现在有许多小程序制作平台提供了简单易用的工具,让你可以轻松地建立自己的小程序。接下来,我将为你详细介绍搭建母婴行业小程序的步骤。 首先&…...
![](https://img-blog.csdnimg.cn/b3b6ae74edda40139338609856c99487.png)
【科普向】Jmeter 如何测试接口保姆式教程
现在对测试人员的要求越来越高,不仅仅要做好功能测试,对接口测试的需求也越来越多!所以也越来越多的同学问,怎样才能做好接口测试? 要真正的做好接口测试,并且弄懂如何测试接口,需要从如下几个…...
![](https://img-blog.csdnimg.cn/img_convert/4f5823e819d95a65261f299e1fa83be2.jpeg)
阿里云2核4G服务器5M带宽5年费用价格明细表
阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS,轻量2核4G4M带宽服务器297元一年,2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等,买5年可以享受3折优惠,阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…...
![](https://img-blog.csdnimg.cn/5b0aa0d2e3674056969f922300b90697.gif)
【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么
🧑💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...
![](https://img-blog.csdnimg.cn/e87e069567f44085ad7b511a92dbae84.png)
springboot整合mybatis实现增删改查(xml)--项目阶段1
目录 一、前言 二、创建项目 创建MySQL数据库和表 创建springboot项目 本文总体代码结构图预览 三、编写代码 (一)新建实体层属性类 (二)新建数据层mapper接口 (三)新建mapper的映射SQL(…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot文件上传异步报错
因为迁移的生产环境,在新的服务器发生了之前没有遇到的问题,这种问题是在异步文件上传的时候才会出现 错误信息如下 16:17:50.009 ERROR c.w.einv.minio.service.impl.MinioFileServiceImpl - 文件上传错误! java.io.FileNotFoundException: /applicati…...
![](https://www.ngui.cc/images/no-images.jpg)
error: unable to unlink old ‘.gitlab-ci.yml‘: Permission denied
#gitlab-runner 执行代码git pull origin xxx 更新时候报 error: unable to unlink old ‘.gitlab-ci.yml’: Permission denied 问题环境:centos 部署gitlab-runner 执行脚本方式 选的shell 产生问题的原因:gitlab-runner程序进程占用锁定了.gitlab-ci…...
![](https://img-blog.csdnimg.cn/b88b98f2bc2a4693ba7f932a32307481.png)
AJAX学习笔记3练习
AJAX学习笔记2发送Post请求_biubiubiu0706的博客-CSDN博客 1.验证用户名是否可用 需求,用户输入用户名,失去焦点-->onblur失去焦点事件,发送AJAX POST请求,验证用户名是否可用 新建表 前端页面 WEB-INF下新建lib包引入依赖,要用JDBC 后端代码 package com.web;import jav…...
![](https://img-blog.csdnimg.cn/cf07e88bdee641da8047c4bc63e63810.png)
springboot实战(五)之sql业务日志输出,重要
目录 环境: 一、mybatis-plus之sql分析日志输出 1.配置 2.验证 3.高级输出方式 二、业务日志输出到文件 1.添加log4j2依赖 2.排除logback依赖 3.新增log4j2的配置文件 4.添加配置 5.启动测试 6.给日志请求加个id 6.1、过滤器filter实现 6.2、测试 6.3、…...
![](https://www.ngui.cc/images/no-images.jpg)
redis7.2.0 centos源码编译安装并设置开机自启动
下载源码包 wget https://github.com/redis/redis/archive/7.2.0.tar.gz tar -zxf 7.2.0.tar.gz 编译编码 编译编码 cd redis-7.2.0 make && make install 此时默认redis-server redis-cli等命令行安装到目录/usr/local/bin/目录中。 如果你想安装命令行到指定目录中你…...
![](https://img-blog.csdnimg.cn/img_convert/f2a7dbb5daa4dd106b6d9d313aecd40e.png)
网易低代码引擎Tango正式开源
一、Tango简介 Tango 是一个用于快速构建低代码平台的低代码设计器框架,借助 Tango 只需要数行代码就可以完成一个基本的低代码平台前端系统的搭建。Tango 低代码设计器直接读取前端项目的源代码,并以源代码为中心,执行和渲染前端视图,并为用户提供低代码可视化搭建能力,…...
![](https://img-blog.csdnimg.cn/img_convert/22b7783b4febf3099a8ea5c10e5c40a6.png)
Apache Linkis 与 OceanBase 集成:实现数据分析速度提升
导语:恭喜 OceanBase 生态全景图中又添一员,Apache Linkis 构建了一个计算中间件层,以促进上层应用程序和底层数据引擎之间的连接、治理和编排。 近日,计算中间件 Apache Linkis 在其新版本中通过数据源功能,支持用户通…...
![](https://img-blog.csdnimg.cn/ad3041ea97f64239a72ca15daa42ca02.png)
EXPLAIN概述与字段剖析
6. 分析查询语句:EXPLAIN(重点) 6.1 概述 定位了查询慢的sQL之后,我们就可以使用EXPLAIN或DESCRIBE 工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。 MySQL中有专门负责优化SELECT语句…...
![](https://www.ngui.cc/images/no-images.jpg)
基于Java IO 序列化方案的memcached-session-manager多memcached节点配置
session的序列化方案官方推荐的有4种 java serializationmsm-kryo-serializermsm-javolution-serializermsm-xstream-serializer 关于这几种,官方也给出了比较: Java serialization is very robust and a proven technology. The biggest disadvantage IMHO is th…...
![](https://img-blog.csdnimg.cn/31686aac2d124bd3bb212f513b4c3aa8.png)
LinkedList(3):并发异常
1 LinkedList并发异常 package com.example.demo;import java.util.Iterator; import java.util.LinkedList;public class TestLinkedList {public static void main(String[] args) {LinkedList linkedList new LinkedList(); //双向链表linkedList.add(11);linkedList.add(…...
![](https://www.ngui.cc/images/no-images.jpg)
vue里el-form+el-table实现验证规则的写法
vue里el-formel-table实现验证规则的写法 vue里el-formel-table实现验证规则的写法 vue里el-formel-table实现验证规则的写法 重点是因为使用el-form el-table与单独使用el-form时数据不同,前者是对象json数组,后者是对象,导致了el-form-ite…...
![](https://img-blog.csdnimg.cn/320e1a9a118f4a07941e22ed8eb50891.png)
K8S 基础概念学习
1.K8S 通过Deployment 实现滚动发布,比如左边的ReplicatSet 的 pod 中 是V1版本的镜像,Deployment通过 再启动一个 ReplicatSet 中启动 pod中 镜像就是V2 2.每个pod 中都有一个pause 容器,他会连接本pod中的其他容器,实现互通。p…...
![](https://www.ngui.cc/images/no-images.jpg)
Java之正则表达式的详细解析
正则表达式 1.1 正则表达式的概念及演示 在Java中,我们经常需要验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,…...
![](https://www.ngui.cc/images/no-images.jpg)
移动端的屏幕分辨率与浏览器的视口宽度(视口大小)是两回事儿
问:在移动端的Web设计中,屏幕的分辨率和视口大小是不是是两回事儿? 答: 是的,屏幕的分辨率和视口大小在移动端的Web设计中是两个不同的概念。 屏幕分辨率(Screen Resolution):这指的…...
![](https://img-blog.csdnimg.cn/cc0a9168d2d04107bacbd0fb5613c037.png)
分布式 - 服务器Nginx:基础系列之Nginx静态资源优化配置指令sendfile | tcp_nopush | tcp_nodelay
文章目录 1. sendfile 指令2. tcp_nopush 指令3. tcp_nodelay 指令 1. sendfile 指令 请求静态资源的过程:客户端通过网络接口向服务端发送请求,操作系统将这些客户端的请求传递给服务器端应用程序,服务器端应用程序会处理这些请求ÿ…...
![](https://img-blog.csdnimg.cn/5bc102b10b274410bef8e13024f63085.png)
Sentinel配置的blockHandler方法不生效
①首先配置流控的资源名跟SentinelResource中的Value配置的一定要一直且唯一 ②其次blockhandler后面的方法一定要跟下面指定的方法名称是一样的 ③也就是我犯下的错误,一定要注意是上面那个才是Sentinel的,下面的是sun公司的…我说呢,一直…...
![](https://www.ngui.cc/images/no-images.jpg)
Mybatis的三种映射关系以及联表查询
目录 一、概念 二、一对一 1、配置generatorConfig.xml 2、Vo包的编写 3、xml的sql编写 4、编写对应接口及实现类 5、测试 三、一对多 1、Vo包类的编写 2、xml的sql编写 3、编写对应接口及实现类 4、测试 四、多对多 1、Vo类 2、xml的sql配置 3、接口及接口实现…...
![](https://img-blog.csdnimg.cn/eebd01a6b346470fa65fc48be633ae26.png)
基于串口校时的数字钟设计
文章目录 设计目标硬件设计数码管串口 软件设计顶层模块串口接收模块数据处理模块时钟模块串口发送模块 总结 设计目标 环境:ACX720开发板 实现功能: 数码管能够显示时分秒能够接收串口数据修改时间能够将当前时间以1s一次速率发送到电脑 硬件设计 数…...
![](/images/no-images.jpg)
天堂网长尾关键词挖掘网站/全球最大的中文搜索引擎
1、安装 Yum install -y freeradius freeradius-mysql freeradius-utils 2、配置 1)修改 clients.conf # vi /usr/local/etc/raddb/clients.conf 在最后增加如下几行: client 172.18.5.88 { 增加认证体,填写OMA的ip地址 s…...
![](/images/no-images.jpg)
个人做的卖货网站/百度公司在哪
Android• 李魔佛 发表了文章 • 7 个评论 • 8642 次浏览 • 2017-12-12 00:24• 来自相关话题因为最近经常弹出一个OTA的更新包,以前一直都是对这些更新不感冒,通常都是直接忽略的。 但是看到这一个版本好像修复了不少的bugs,想着升级一次把…...
![](/images/no-images.jpg)
网站排名软件推荐/免费网站推广软件下载
根据 3 月 2 日,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止最具吸引力的,平均每位求职者会收到9 份面试邀请。 海风教育在线辅导0元一对一试听课等你来领取,领取课程方法: 1、私…...
![](http://hi.csdn.net/attachment/201112/1/0_1322708778u3rs.gif)
贵阳免费网站建设/企业营销策划
转载地址:http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html java中的多线程 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。 对于直接继承Thread的类来说,代…...
![](/images/no-images.jpg)
有源码手机怎么搭建网站/百度如何推广网站
gitHub是一个代码托管服务的提供商,可以提供个人或者企业的代码托管,同时它也是一个巨大的开源社区。-- https://github.com/ 对于企业的代码协作,如果采用http的方式登录,那么每次进行需要交互的操作时,都必须输入账户…...
![](/images/no-images.jpg)
网站备案要如何取消/南京seo收费
一、模板概述定制数据结构模板,这当然比直接分析16进制的原始数据要方便得多,而且不容易出错。你编辑好数据结构模板保存后,数据模板就生效了。这样你就可以分析来自硬盘、内存等一些数据,这些数据将套用你数据结构模板来显示数据…...