学习笔记TF042:TF.Learn、分布式Estimator、深度学习Estimator

TF.Learn,TensorFlow重要模块,各种类型深度学习及流行机器学习算法。TensorFlow官方Scikit Flow项目迁移,谷歌员工Illia Polosukhin、唐源发起。Scikit-learn代码风格,帮助数据科学从业者更好、更快适应接受TensorFlow代码。囊括许多TensorFlow代码、设计模式,用户更快搭建机器学习模型实现应用。避免大量代码重复,把精力放在搭建更精确模型。与其他contrib模块无逢结合。

分布式Estimator。Estimator,各种各样机器学习、深度学习类。可以直接用这些高阶类,也可以根据实际应用需求快速创建子类。graph_actions模块,Estimator在训练、评估模型复杂分布式逻辑被实现、浓缩,不需要复杂Supervisor、Coordinator分布式训练具体实现细节、逻辑。

Estimator接受自定义模型,函数答名(入参字段->返回字段):(1)(features,targets)->(predictions,loss,train_op)。(2)(features,targets,mode)->(predictions,loss,train_op)。(3)(features,targets,mode,params)->(predictions,loss,train_op)。

自定义模型接受两个参数:features和targets。features,数据特征。targets数据特征每行目标或分类标识。tf.one_hot对targets独热编码(One-hot Encoding)。layers.stack叠加多层layers.fully_connected完全连接深度神经网络,每层分别10?20?10个隐藏节点,不同层转换、训练,得到新数据特征。models.logistic_regression_zero_init加一层,0初始参数值逻辑回归模型,得到预测值、损失值。contrib.layers.optimize_loss函数优化损失值,根据需要选择不同优化函数和学习速率。optimize_loss训练算子(Training Operator),每次训练迭代优化模型参数和决定模型发展方向。返回预测值、预测概率,或其中一个。

iris数据分类。Scikit-learn datasets引入数据,cross_validation数据分训练、评估。my_model放learn.Estimator,Scikit-learn风格fit、predict函数。快速定义自己的模型函数,直接利用Estimator各种功能,直接分布式模型训练,不用担心实现细节。

模式(Mode)定义函数,常用模式training、evaluation、prediction,可以在ModeKeys找到。加条件语句实现复杂逻辑。params调节参数,fit函数可以给更多参数。

建立机器学习Estimator。BaseEstimator最抽象最基本实现TensorFlow模型训练、评估类。fit()模型训练,partial_fit()线上训练,evaluate()评估模型,predict()使用模型预测新数据。graph_actions复杂逻辑模型训练、预测。SuperVisor、Coordinator、QueueRunner,分布式训练、预测。learn.DataFeeder、learn.DataFrame类自动识别、处理、迭代不同类型数据。estimators.tensor_signature对数据进行兼容性判断(稀疏张量Sparse Tensor),数据读入更方便、稳定。BaseEstimator对learn.monitors及模型存储进行初始化设置。learn.monitors监测模型训练。

BaseEstimator,_get_train_ops()、_get_eval_ops()、_get_predict_ops()子类实现。

Estimator,_get_train_ops()接受features、targets参数,自定义模型函数返回Operation、损失Tensor Tuple,在每个训练迭代优化模型参数。非监督学习模型Estimator,忽略targets。

_get_eval_ops(),BaseEstimator子类自定义metrics评估每个模型训练迭代。contrib.metrics。自定义metrics函数返回一个Tensor对象Python字黄代表评估Operation,每次迭代用到。

自定义模型对新数据预测、计算损失值,ModeKeys EVAL表明函数只在评估用。contrib.metrics模块,streaming_mean对loss计算平均流,之前计算过平均值加这次迭代损失值再计算平均值。

_get_predict_ops()实现自定义预测。对预测结果进一步处理。预测概率转换简单预测结果,概率平滑加工(Smooting)。函数返回Tensor对象Python字典代表预测Operation。Estimator predict()函数,Estimator分布式功能。非监督模型,类似Sckkit-learn transform()函数。

逻辑回归(LogisticRegressor),Estimator提供绝大部分实现,LogisticRegressor只需提供自己的metrics(AUC、accuracy、precision、recall,处理二分类问题),快速在LogiticRegressor基础写子类实现个性化二分类Estimator,不需要关心其他逻辑实现。

TF.Learn 随机森林模型TensorForestEstimator许多细节实现在contrib.tensor_forest。只利用、暴露高阶需要用到成分到TensorForestEstimator。超参数通过contrib.tensor_forest.ForestHParams传到构造函数params,构造函数params.fill()建造随机森林TensorFlow图,tensor_forest.RandomForestGraphs。

实现复杂,需要高效率,细节用C++实现单独Kernel。_get_predict_ops()函数,tensor_forest内部C++实现data_ops.ParseDataTensorOrDict()函数检测、转换读入数据到可支持数据类型,RandomForestGraphs inference_graph函数得到预测Operation。

_get_train_ops()、_get_eval_ops()函数分别调用RandomForestGraphs.trainning_loss()、RandomForestGraphs.onference_graph()函数,data_ops.ParseDataTensorOrDict、data_ops.ParseLabelTensorOrDict分别检测、转换features、targets到兼容数据类型。

调节RunConfig运行时参数。RunConfig,TF.Learn类,调节程序运行时参数。num_cores选择使用核数量,num_ps_replicas调节参数服务器数量,gpu_memory_fraction控制使用GPU存储百分比。

RunConfig master参数,指定训练模型主服务器地址,task设置任务ID,每个任务ID控制一个训练模型参数服务器replica。

初始化一个RunConfig对象,传进Estimator。RunConfig参数默认值在本地运行简单模型,只用一个任务ID,80%GPU存储参数传进Estimator。运行时参数会自动运用,不用担心ConfigProto、GPUOptions细节。快速改变参数实现分布式模型训练、参数服务器使用。

Experiment,简单易用建立模型实验类,建模所需所有信息,Estimator、训练数据、评估数据、平估指标、监督器、评估频率。可以选择当地运行,可以和RunConfig配合分布式试验。LearnRunner,方便做实验。

tf.app.flags定义可以从命令行传入参数,数据、模型、输出文件路径、训练、评估步数。schedule试验类型。local_run()当地试验。run_std_server()标准服务器试验。master_grpc_url主要GRPC TensorFlow服务器。num_parameter_servers参数服务器数量。

建立Experiment对象函数,FLAGS建立RunConfig,机器学习模型Estimator,建立广度深度结合分类器(DNNLinearCombinedClassifier)。input_train_fn、input_test_fn,数据来源、提供训练、评估数据。

create_experiment_fn()函数传入LearnRunner进行不同类型试验,当地、服务器试验。试验结果存储到不同路径。

深度学习Estimator。TF.Learn包含简单易用深度神经网络Estimator。分类问题DNNClassifier。_input_fn()建立数据,layers模块建立特征列。

特征列、每层隐藏神经单元数、标识类别数传入DNNClassifier,迅速建立深度神经网络模型。

fit()、evaluate()方法模型训练、评估。

每行数据都有权重。DNNClassfier,指定一列为权重列,自动分配到训练过程。四行数据,每行不同权重。权重列、特征列放入features。

DNNClassifier表明权重列列名 w,特征列列名x(x转换特征列)。

传入自定义metrics方程_my_metric_op(),操作predictions、targets进行metrics计算。只考虑二分类问题,tf.slice()剪切predictions第二列作预测值。

tf.slice()传入输入矩阵input,剪切开始元素begin,剪切Tensor形状size,size[i]代表第i个维度想剪切矩阵shape。

根据需求任意在predictions、targets操作实现想要metrics计算,evaluate()传入metrics函数,TF.Learn根据metrics评估模型。

evaluate()可以提供多个metrics,_my_metric_op自定义,tr.contrib自带。

optimizer提供自定义函数,定义自己的优化函 ,包含指数递减学习率。

tf.contrib.framework.get_or_create_global_step()得到目前模型训练到达全局步数。tf.train.exponential_decay()对学习率指数递减,避免爆炸梯度。

广度深度模型,DNNLinearCombinedClassifier。谷歌广泛用在各种机器学习应用,深度神经网络和逻辑回归结合,不同特征通过两种不同方式结合,更能体现应用意义和更有效推荐结果。类似Kaggle竞赛Ensemble。

更多参数,与DNNClassifier、LinearClassifier不同特征列选择。

gender、education、relationship、workclass转换为FeatureColumn。分wide_columns、deep_columns。wide_columns用在LinearClassifier,deep_columns用在DNNClassifier。分别传入DNNLinearCombinedClassifier建立广度深度模型。具有线性特征,也具有深度神经网络特征。

参考资料:
《TensorFlow实战》

欢迎付费咨询(150元每小时),我的微信:qingxingfengzi

时间: 2024-10-09 14:28:34

学习笔记TF042:TF.Learn、分布式Estimator、深度学习Estimator的相关文章

学习笔记TF043:TF.Learn 机器学习Estimator、DataFrame、监督器Monitors

线性.逻辑回归.input_fn()建立简单两个特征列数据,用特证列API建立特征列.特征列传入LinearClassifier建立逻辑回归分类器,fit().evaluate()函数,get_variable_names()得到所有模型变量名称.可以使用自定义优化函数,tf.train.FtrlOptimizer(),可以任意改动传到LinearClassifier. 随机森林.包含多个决策树分类器及回归算法.处理不平衡分类资料集,极大平衡误差.Kaggle数据科学竞赛,延伸版XGBoost.

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF

随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中可以大获全胜?人工智终将会取代人类智慧吗? <神经网络与深度学习>是一本介绍神经网络和深度学习算法基本原理及相关实例的书籍,它不是教科书,作者已尽量把公式减少到最少,以适应绝大部分人的阅读基础和知识储备.<神经网络与深度学习>涵盖了神经网络的研究历史.基础原理.深度学习中的自编码器.深

学习笔记TF044:TF.Contrib组件、统计分布、Layer、性能分析器tfprof

TF.Contrib,开源社区贡献,新功能,内外部测试,根据反馈意见改进性能,改善API友好度,API稳定后,移到TensorFlow核心模块.生产代码,以最新官方教程和API指南参考. 统计分布.TF.contrib.ditributions模块,Bernoulli.Beta.Binomial.Gamma.Ecponential.Normal.Poisson.Uniform等统计分布,统计研究.应用中常用,各种统计.机器学习模型基石,概率模型.图形模型依赖. 每个不同统计分布不同特征.函数,同

吴恩达 DeepLearning.ai课程笔记(1-3)神经网络和深度学习 --- 浅层神经网络

以下为在Coursera上吴恩达老师的DeepLearning.ai课程项目中,第一部分<神经网络和深度学习>第二周课程部分关键点的笔记.笔记并不包含全部小视频课程的记录,如需学习笔记中舍弃的内容请至 Coursera 或者 网易云课堂.同时在阅读以下笔记之前,强烈建议先学习吴恩达老师的视频课程. 1. 二分类问题 对于二分类问题,大牛给出了一个小的Notation. 样本:  ,训练样本包含  个: 其中  ,表示样本 包含 个特征:  ,目标值属于0.1分类: 训练数据:  输入神经网络时

Python学习笔记__10.5章 分布式进程

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上. Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上.依靠网络通信,一个服务进程可以作为调度者,将任务分布到其他多个进程中.由于managers模块封装很好,不必了解网络通信的细节,就可以很

深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全

原文地址:Image Completion with Deep Learning in TensorFlow by Brandon Amos 原文翻译与校对:@MOLLY && 寒小阳 ([email protected]) 时间:2017年4月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/52665396 声明:版权所有,转载请联系作者并注明出 简介 第一步:将图像理解为一个概率分布的样本 你是怎样补全缺失信息的呢? 但是怎

kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口优化之外,其它真是无需太多优化. 1. CPU性能优化 (1) 服务器或宿主机主板BIOS中开启Intel Virtualization Technology(简称VT), 如果主板支持In

小白学习之pytorch框架(2)-动手学深度学习(begin)

在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比较执着,想学pytorch,好,有个大神来了,把<动手学深度学习>整本书用pytorch代码重现了,其GitHub网址为:https://github.com/ShusenTang/Dive-into-DL-PyTorch   原书GitHub网址为:https://github.com/d2l-