前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow

tensorflow

作者头像
sofu456
发布2019-07-09 14:15:51
1.1K0
发布2019-07-09 14:15:51
举报
文章被收录于专栏:sofu456sofu456

1.windows安装tensorflow

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

(pip install tensorflow==1.5)

2.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文件路径即可

3.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(至少有正负样本),才能保证结果准确性

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

4.算法

m-p模型->感知器模型->BP算法 CNN、RNN、DNN算法 keras

感知器(线性系统输入微小偏差输出变化不大,输出wx+b)、神经元模型(输出函数o(wx+b)即激励函数,多层激活拟合输入)

多个隐藏层的神经网络模型(深度学习)、隐藏层激励函数必须是非线性的

正向传播算法、反向传播算法(lost函数对参数求导,分析参数的变化曲线)

Lost函数:自定义(固定)函数(凹函数使用梯度下降算法容易产生局部最优解)、模型输出和期望值的差距

Cost函数【误差函数】:Lost函数的样本平均值,lost单个样本 tf.equal计算准确度(准确度和lost算法不同)

CNN:卷积神经网,2个卷积层(取特征值),2个池化层(取特征最大值),1个全连接层(所有特征转换为1维数组、线性变换) linear[condv]+acivation网络模型

RNN:循环神经网络(有序输入输出,语音文字等,容易出现梯度消失LSTM代替,元素之间独立,每个元素可存储上次参数,内部使用softmax计算概率)

GAN:对抗网络(模拟数据、随机数概率统计评估、gan的全局最优解是贝叶斯分类器)

神经网络模型拟合任何函数(不用多项式函数拟合,线性激活函数不构成多项式函数,而是w(wx+b)+b任是线性组合)

cnn(图像识别)、rcnn(cnn后做svm分类,目标检测)

图像处理:ImageDataGenerator(keras图像预处理、1张图片随机变换生成多张)

图像标注工具:ImageNet、Labelme(labelme_json_to_dataset命令转换保存的json文件)、VOTT(https://github.com/Microsoft/VoTT)

特征提取算法:hog特征(边缘梯度信息)、haar特征(像素明暗变化)、lbp特征(纹理信息)

神经网络模型(输入层--隐藏层--输出层)

skip-gram模型(输入层--projection映射层--输出层、输入词汇、输出关联词汇)、cbow模型(存输入的上下文数据、输出分类后的哈夫曼树【不区分词性】)

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

SGD优化器>ADM优化器>Moutain优化器 (消耗时间)

物体分类、目标检测、语义分割、实例分割、全景分割

5.机器学习分类

监督学习:数据拟合(激励函数线性函数无法拟合),输出具体分类,svm(支持向量机、直线拟合分类器),cnn分类器(数据拟合即分类)

无监督学习:输出无固定分类(极大似然估值【贝叶斯分类器最大值】、蒙特卡洛算法【伪随机数算法(有周期性、可预测)】,kmeans算法【随机给定几个区域中心点,遍历所有点计算距离最近中心和重新计算中心点,直到中心点不再变化】)

强化学习:决策问题(Q-learning、随机森林、贪心算法【当前最优解集合,最终局部最优解】) 记录数据状态

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

6.机器学习数学模型

IID(独立同分布,训练和测试数据保证相同的分布,深度加深使用BN算法保证每层输入相同分布)

样本分布均衡,否则训练拟合错误

7.Tensorflow Demo

代码语言:javascript
复制
>>> import tensorflow as tf
>>> hello = 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() >>> import tensorflow as tf
 >>> hello = tf.constant('Hello, TensorFlow!')
 >>> sess = tf.Session()
 >>> sess.run(hello)
 'Hello, TensorFlow!'
 >>> a = tf.constant(10)
 >>> b = tf.constant(32)
 >>> sess.run(a + b)        #(a+b).eval()
 42
 >>> sess.close()                #tf.argmax(input,axis=[0列,1行],name,dimension,output_type)

8.模型问题

模型不收敛:学习率太高、输入样本数太大(每次采样样本数被总样本整除否则需要丢弃不能整出的样本或者特殊处理dataset重复添加样本)、是否启动优化器

模型过拟合:dropout(输入层、或者全连接层、丢弃率训练0.5,测试1) 、L1、L2正则化参数减小方差、BN(1.输入减均值【零均值】2.归一化)

batch normalization批标准化(BN算法),加快收敛和提高准确度,神经网络深度加深后收敛变慢 (保证activation函数输入在[0,1]内,防止梯度消失)

调整样本数可以判断,过拟合和欠拟合

梯度消失:连乘因子小于1,后面的网络层,输入趋于0,参数不发生变化(修改激活函数避免)

梯度爆炸:连乘因子大于1,后面层输入趋于NAN(设置阈值、减小权重)

9.python图形库

pip install pillow,matplotlib,opencv-python

10.NL(自然语言)

nltk

11.命令行

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后重新安装)

12.分类算法

多标签分类:多个输出分类(sigmod,取大于某个阈值)

多类分类:贝叶斯算法、knn算法(多个二分类或者softmax,取多分类中最大概率argmax)

二分类:决策树、svm(wx+b直线函数分割)、sigmod激活函数(二分类负样本和正样本比例失衡,需要在训练的时候调整数据,使代码dataset样本均衡)

分类方法参考:https://www.cnblogs.com/yanshw/p/10831838.html

13.准确率、召回率、ROC曲线

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

代码语言:javascript
复制
# 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)

14.数据集

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

15.tensorflow所有数学模型

参考:

https://www.cnblogs.com/xlturing/p/5844555.html基本数学模型(马里奥通关ai)

https://www.imooc.com/article/40710

https://www.cnblogs.com/Anita9002/p/9284817.html监督学习和无监督学习

http://www.tensorfly.cn/home/?p=80入门

https://blog.csdn.net/liuchonge/article/details/77181508过拟合(欠拟合、失活神经元)

https://blog.csdn.net/red_stone1/column/info/15855吴恩达专题

https://blog.csdn.net/weixin_40446557/article/details/83307420损失函数模型

https://devdocs.io/Tensorflow Vscode中查询Api

https://blog.csdn.net/acdreamers/article/details/44978591蒙特卡洛算法(区域面积大概率求值)

https://blog.csdn.net/qq_33951180/article/details/53229240哈夫曼编码(统计词汇频率,高频率低存储空间,文件压缩)

https://www.cntofu.com/book/85/dl/reinforcement/q-learning.md机器学习原理(书籍)

https://blog.csdn.net/u010099080/article/details/77426577tensorboard

https://blog.csdn.net/kk123k/article/details/86584216语义分割、实例分割

https://blog.csdn.net/Julialove102123/article/details/80089018吴恩达

https://blog.csdn.net/xiongchao99/article/details/78776629特征提取算法

https://blog.csdn.net/chaipp0607/article/details/79036312深度学习标注工具

https://blog.csdn.net/tkkzc3E6s4Ou4/article/details/79988596 开放的数据集

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档