tensorflow基础

windows安装tensorflow

anaconda或者pip安装tensorflow,tensorflow只支持win7 64系统,本人使用tensorflow1.5版本(pip install tensorflow==1.5)

tensorboard

tensorboard只支持chrome浏览器,而且加载过程中可能有一段时间假死状态。
tensorboard --logdir=path启动(logdir需要有tensorflow的运行日志,tensorboard通过日志分析代码)
tensorboard的日志下面需要建文件夹,才能在tensorboard中筛选日志日期,日志以tfevent文件保存
图表有两种连接关系:
- 数据依赖(实线)
- 控制依赖(虚线)
tf.summary.histogram(横轴值,纵轴数量)
tf.summary.image(卷积后的图像特征显示)
tf.summary.scalar name可以使用‘/’划分相同类
tf.summary.merge_all返回tensor计算后,writer.add_summary
what-if tool,path to example栏中输入tfrecord文件路径即可

tensorflow

  • 常量、变量(类实现需要初始化、神经网络方向传播算法中可以被算法修改的值)
  • 静态和动态shap,[2,4]数组的属性shap,1*2,placeholder:相当于形参
  • session.run(tensor)计算tensor值,或者eval,否则值未知

graph、session(只能包含一个graph)、op(图上的节点、输出tensor) eval执行单个节点(tensor转array) run可以多个
学习后的数据保存为模型,避免重复学习(pb文件包含参数和网络图) graph(pbtxt包含网络图) ckpt(包含存储参数)
模型检查点(训练中止和继续)
TFRecords 文件(大数据训练数据使用、使用example对象)
dense tensor(密集张量) sparse tensor(稀疏张量、使用 indices、values、dense_shape指定矩阵中有值的元素)
clip gradients(防止梯度爆炸)
slot(如 MomentumOptimizer 和 AdagradOptimizer 等优化器,有额外的内部变量,可以get_slot获取)

一个输入,输出多个标签 (多标签分类问题、softmax激活函数取概率值最大的几个值,softmax概率值接近0,导致梯度消失,准确率低可用logsoftmax替换,pow(10,input)计算概率)
模型训练的分类数>=2(至少有正负样本),才能保证结果准确性

numpy

np.tobytes转byte数据,np.frombuffer,byte转np
输出分类标签使用one-hot编码(tf.one_hot(label,length=最大数值+1),tf.argmax解码)
pytorch生成one-hot编码如下:torch.zeros(data.shape[0],64).scatter_(1,label.view(64,-1),1)
tensorflow.reshape返回tensorflow、numpy.reshape返回array
numpy广播机制,最后一位相同,或者有一个轴为1

算法

m-p模型->感知器模型->BP算法 CNN、RNN、DNN算法 keras
感知器(线性系统输入微小偏差输出变化不大,输出wx+b)、神经元模型(输出函数o(wx+b)即激励函数,多层激活拟合输入)
多个隐藏层的神经网络模型(深度学习)、隐藏层激励函数必须是非线性的
正向传播算法、反向传播算法(lost函数对参数求导,分析参数的变化曲线)

  • Lost函数:自定义(固定)函数(凹函数使用梯度下降算法容易产生局部最优解,常用的Hinge(svm线性可分,模式识别中的算法)、CrossEntropyLoss、Focal loss、Center Loss)、模型输出和期望值的差距
  • Cost函数【误差函数】:Lost函数的样本平均值,lost单个样本 tf.equal计算准确度(准确度和lost算法不同)

基础的网络结构

  • CNN:卷积神经网,2个卷积层(取特征值,不改变图像大小),2个池化层(缩小数据量,2X2缩小一半,maxpool取最大值池化),1个全连接层(线性变换、全连接层限制输入文件大小,卷积层不限制) cnn通过卷积远算提取图像特征 linear[condv]+acivation网络模型
  • RNN:循环神经网络(有序输入输出,语音文字等,容易出现梯度消失LSTM代替,元素之间独立,每个元素可存储上次参数,内部使用softmax计算概率)
  • GAN:对抗网络(模拟数据、随机数概率统计评估、gan的全局最优解是贝叶斯分类器)
    神经网络模型拟合任何函数(不用多项式函数拟合,线性激活函数不构成多项式函数,而是w(wx+b)+b任是线性组合)
    神经网络层级加深,拟合效果变差,容易出现梯度消失和爆炸,需要使用残差网络RestNet的结构优化
    cnn(图像识别)、rcnn(cnn后做svm分类,目标检测)

图像处理:ImageDataGenerator(keras图像预处理、1张图片随机变换生成多张)
图像标注工具:ImageNet、Labelme(labelme_json_to_dataset命令转换保存的json文件)、

特征提取算法:

  • hog特征(边缘梯度信息)
  • haar特征(像素明暗变化)
  • lbp特征(纹理信息)
  • VOTT(https://github.com/Microsoft/VoTT)

神经网络模型(输入层–隐藏层–输出层)
word2vector结构:
- skip-gram模型(输入层–projection映射层–输出层、输入词汇、输出关联词汇)
- cbow模型(存输入的上下文数据、输出分类后的哈夫曼树【不区分词性】)

激活函数(限制输出范围):

  • sigmod(概率输出0-1,输出接近0容易梯度消失)
  • tanh(-1-1)
  • relu(值域0到无穷大,容易出现梯度爆炸,导数稳定收敛快、sigmod和tanh在0附近收敛快过大数值收敛慢)

梯度下降优化器:
SGD优化器>ADM优化器>Moutain优化器 (消耗时间)

图像处理技术:
物体分类、目标检测、语义分割、实例分割、全景分割

机器学习分类

  • 监督学习:数据拟合(激励函数线性函数无法拟合),输出具体分类,svm(支持向量机、直线拟合分类器),cnn分类器(数据拟合即分类)
  • 无监督学习:输出无固定分类(极大似然估值【贝叶斯分类器最大值】、蒙特卡洛算法【伪随机数算法(有周期性、可预测)】,kmeans算法【随机给定几个区域中心点,遍历所有点计算距离最近中心和重新计算中心点,直到中心点不再变化】)
  • 强化学习:决策问题(Q-learning【DQL深度Q-learning】、随机森林、贪心算法【当前最优解集合,最终局部最优解】)

强化学习可以通过gym小游戏工具来训练
在这里插入图片描述

  • 机器学习:分类问题、聚类问题、回归问题、生成问题

机器学习数学模型

IID(独立同分布,训练和测试数据保证相同的分布,深度加深使用BN算法保证每层输入相同分布)
样本分布均衡,否则训练拟合错误

Tensorflow Demo

import tensorflow as tfhello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'a = tf.constant(10.)
b = tf.constant(32.)   #后面加点表示浮点数
sess.run(a + b)       #42.0000
sess.close()

模型问题

模型不收敛:学习率太高、输入样本数太大(每次采样样本数被总样本整除否则需要丢弃不能整出的样本或者特殊处理dataset重复添加样本)、是否启动优化器
模型过拟合:dropout(输入层、或者全连接层、丢弃率训练0.5,测试1) 、L1、L2正则化参数减小方差、BN(1.输入减均值【零均值】2.归一化)
batch normalization批标准化(BN算法),加快收敛和提高准确度,神经网络深度加深后收敛变慢 (保证activation函数输入在[0,1]内,防止梯度消失)
调整样本数可以判断,过拟合和欠拟合
梯度消失:连乘因子小于1,后面的网络层,输入趋于0,参数不发生变化(修改激活函数避免)
梯度爆炸:连乘因子大于1,后面层输入趋于NAN(设置阈值、减小权重)

python图形库

pip install pillow,matplotlib,opencv-python

NL(自然语言)

nltk,文本图形等数据,转换成深度学习的向量输入

命令行

FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_string(“image”,“png”, “input image file”) (使用-h产生提示)
tf.app.run(main=,argv=)
使用pyc文件发布或者pip install pyinstaller (打包py文件为exe,dist目录中) (AttributeError: ‘str’ object has no attribute 'items’卸载setuptools后重新安装)

分类算法

多标签分类:多个输出分类(sigmod,取大于某个阈值)
多类分类:贝叶斯算法、knn算法(多个二分类或者softmax,取多分类中最大概率argmax)
二分类:决策树、svm(wx+b直线函数分割)、sigmod激活函数(二分类负样本和正样本比例失衡,需要在训练的时候调整数据,使代码dataset样本均衡)
分类方法参考:https://www.cnblogs.com/yanshw/p/10831838.html

准确率、召回率、ROC曲线

正样本和负样本1:4,精准率和召回率都很大时,ROC曲线大于某个阈值、AUC指ROC曲线面积(0-1)值越大越准确(混淆【误差】矩阵)

  • P(正样本) N(负样本)
  • TP predict 和 label 同时为1
    TP += ((pred_choice == 1) & (target.data == 1)).cpu().sum()
  • TN predict 和 label 同时为0
    TN += ((pred_choice == 0) & (target.data == 0)).cpu().sum()
  • FN predict 0 label 1
    FN += ((pred_choice == 0) & (target.data == 1)).cpu().sum()
  • FP predict 1 label 0
    FP += ((pred_choice == 1) & (target.data == 0)).cpu().sum()

p = TP / (TP + FP) 精确度
r = TP / (TP + FN) 召回率
F1 = 2 * r * p / (r + p) 即 2/F1 = 1/r+1/p
acc = (TP + TN) / (TP + TN + FP + FN)

数据集

  • mnist数据集(手写数字图片)
  • cifar数据集(物体图片)

参考

https://www.cnblogs.com/xlturing/p/5844555.html基本数学模型(马里奥通关ai)
https://www.imooc.com/article/40710
https://www.cnblogs.com/Anita9002/p/9284817.html监督学习和无监督学习
https://blog.csdn.net/red_stone1/column/info/15855吴恩达专题

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

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

相关文章

K8S pod资源、探针

目录 一.pod资源限制 1.pod资源限制方式 2.pod资源限制指定时指定的参数 (1)request 资源 (2) limit 资源 (3)两种资源匹配方式 3.资源限制的示例 (1)官网示例 2&#xff0…

机器学习第七课--情感分析系统

分词 分词是最基本的第一步。无论对于英文文本,还是中文文本都离不开分词。英文的分词相对比较简单,因为一般的英文写法里通过空格来隔开不同单词的。但对于中文,我们不得不采用一些算法去做分词。 常用的分词工具 # encodingutf-8 import …

Python爬虫:获取必应图片的下载链接

文章目录 1. 前言2. 实现思路3. 运行结果 1. 前言 首先,说明一下,本篇博客内容可能涉及到版权问题,为此,小编只说明一下实现思路,至于全部参考代码,小编不粘贴出来。不过,小编会说明详细一些&a…

three.js——模型对象的使用材质和方法

模型对象的使用材质和方法 前言效果图1、旋转、缩放、平移,居中的使用1.1 旋转rotation(.rotateX()、.rotateY()、.rotateZ())1.2缩放.scale()1.3平移.translate()1.4居中.center() 2、材质属性.wireframe 前言 BufferGeometry通过.scale()、…

LeetCode: 4. Median of Two Sorted Arrays

LeetCode - The Worlds Leading Online Programming Learning Platform 题目大意 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m n))。 你可以假设 nums1 和 nums2 不会同时为空。 …

css动画旋转分层旋转图

1.代码 <template><view class"animations"><view class"animation animation1"><view class"animate1"></view><view class"animate2"></view><view class"animate3">&l…

Qt --- Day02

实现效果&#xff1a; 点击登录&#xff0c;检验用户密码是否正确&#xff0c;正确则弹出消息框&#xff0c;点击ok转到另一个页面 不正确跳出错误消息框&#xff0c;默认选线为Cancel&#xff0c;点击Yes继续登录 点击Cancel跳出问题消息框&#xff0c;默认选项No&#xff0c…

Java文字描边效果实现

效果&#xff1a; FontUtil工具类的完整代码如下&#xff1a; 其中实现描边效果的函数为&#xff1a;generateAdaptiveStrokeFontImage() package com.ncarzone.data.contentcenter.biz.img.util;import org.springframework.core.io.ClassPathResource; import org.springfr…

使用vite创建vue3项目及项目的配置 | 环境准备 ESLint配置 prettier配置 husky配置 项目继承

文章目录 使用vite创建vue3项目及项目的配置1.环境准备2.项目配置ESLint校验代码工具配置 - js代码检测工具1.安装ESLint到开发环境 devDependencies2.生成配置文件:.eslint.cjs**3.安装vue3环境代码校验插件**4. 修改.eslintrc.cjs配置文件5.生成ESLint忽略文件6.在package.js…

[BJDCTF2020]Mark loves cat foreach导致变量覆盖

这里我们着重了解一下变量覆盖 首先我们要知道函数是什么 foreach foreach (iterable_expression as $value)statement foreach (iterable_expression as $key > $value)statement第一种格式遍历给定的 iterable_expression 迭代器。每次循环中&#xff0c;当前单元的值被…

Learn Prompt-ChatGPT 精选案例:广告文案

ChatGPT 可以帮助我们生成广告文案和宣传图片&#xff0c;这对营销品牌建设很有帮助。通常&#xff0c;一个产品会有一个主要的广告词&#xff0c;传达设计理念或宣传产品的好处。我们可以尝试直接生成文案&#xff0c;看看 ChatGPT 有没有好的创意。假设我们的产品是一款登山鞋…

计算机专业毕业设计项目推荐06-工作室管理系统(Java+Vue+Mysql)

工作室管理系统&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现****最后想说的****联系方式** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较…

Word 文档转换 PDF、图片

工作有需要 Word 文档转换 PDF、图片 的场景&#xff0c;我们来看看 Java 开发中怎么解决这个问题的。 Word 转 PDF Word 转 PDF 分为商用 Aspose 方案和开源 Apache POIiText 方案。 Aspose 方案 这种方式在目前来看应该是最好的&#xff0c;无论是转换的速度还是成功的概…

100道基于Android毕业设计的选题题目,持续更新

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好&#xff0c;我是程序员徐师兄、今天给大家谈谈基于android的app开发毕设题目&#xff0c;以及基于an…

深入理解Java单例模式和优化多线程任务处理

目录 饿汉模式懒汉模式单线程版多线程版双重检查锁定 阻塞队列 单例模式能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例&#xff0c;并提供一个全局访问点。 饿汉模式 类加载的同时&#xff0c;创建实例。 class Singleton {private static final Singlet…

运维自动化:提高效率的秘诀

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

GEE:快速实现NDVI时间序列NDVI线性趋势和变化敏感性计算(斜率、截距)

作者:CSDN @ _养乐多_ 本博客将向您介绍如何使用Google Earth Engine(GEE)平台来处理Landsat 5、7和8的卫星图像数据,计算NDVI的斜率和截距,以及如何导出这些结果供进一步分析使用。 文章目录 一、代码详解1.1 核心代码详解1.2 核心代码详解1.3 代码框架介绍二、完整代码…

day06_Java中的流程控制语句

流程控制 简单来讲所谓流程就是完成一件事情的多个步骤组合起来就叫做一个流程。在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。我们必须清楚每条语句的执行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能…

智慧公厕助力数字强市建设,打造善感知新型信息化公共厕所

随着城市建设的不断发展&#xff0c;智慧公厕作为一个重要的基础设施&#xff0c;正逐渐受到人们的重视。智慧公厕不仅为人们提供舒适的使用环境&#xff0c;更是通过数字化技术的应用&#xff0c;为城市发展注入新的动力。本文将以智慧公厕源头厂家广州中期科技有限公司&#…

@Validated 和 @Valid 的区别,你真的懂吗?SpringBoot 参数校验必知必会!

概述 Valid是使用Hibernate validation的时候使用Validated是只用Spring Validator校验机制使用 说明&#xff1a;java的JSR303声明了Valid这类接口&#xff0c;而Hibernate-validator对其进行了实现 Validation对Valid进行了二次封装&#xff0c;在使用上并没有区别&#xff…