API

class AdadeltaOptimizer:实现Adadelta算法的优化器。

class AdagradDAOptimizer:用于稀疏线性模型的Adagrad Dual Averaging算法。

class AdagradOptimizer:实现Adagrad算法的优化器。

class AdamOptimizer:实现Adam算法的优化器。

class BytesList

class Checkpoint:组检查可检查对象,保存和恢复它们。

class CheckpointSaverHook:每N步或秒保存检查点。

class CheckpointSaverListener:在检查点保存之前或之后执行操作的侦听器的接口。

class ChiefSessionCreator:为一个酋长创建一个tf.Session。

class ClusterDef

class ClusterSpec:将群集表示为一组“任务”,组织为“作业”。

class Coordinator:线程协调员。

class Example

class ExponentialMovingAverage:通过使用指数衰减维持变量的移动平均值。

class Feature

class FeatureList

class FeatureLists

class Features

class FeedFnHook:运行feed_fn并相应地设置feed_dict

class FinalOpsHook:一个Tensors在会话结束时评估的钩子。

class FloatList

class FtrlOptimizer:实现FTRL算法的优化器。

class GlobalStepWaiterHook:延迟执行直到全局步骤到达wait_until_step

class GradientDescentOptimizer:优化器,实现梯度下降算法。

class Int64List

class JobDef

class LoggingTensorHook:每N个本地步骤,每N秒或结束打印给定的张量。

class LooperThread:重复运行代码的线程,可选择在计时器上运行。

class MomentumOptimizer:实现Momentum算法的优化器。

class MonitoredSession:类似会话的对象,用于处理初始化,恢复和挂钩。

class NanLossDuringTrainingError

class NanTensorHook:如果损失是NaN,监控损失张量并停止训练。

class Optimizer:优化器的基类。

class ProfilerHook:每N步或秒捕获CPU / GPU分析信息。

class ProximalAdagradOptimizer:优化器,实现Proximal Adagrad算法。

class ProximalGradientDescentOptimizer:优化器,实现近端梯度下降算法。

class QueueRunner:保存队列的入队操作列表,每个队列都在一个线程中运行。

class RMSPropOptimizer:实现RMSProp算法的优化器。

class Saver:保存和恢复变量。

class SaverDef

class Scaffold:用于创建或收集训练模型通常所需的部分的结构。

class SecondOrStepTimer:定时器每N秒触发一次或每N步触发一次。

class SequenceExample

class Server:进程内TensorFlow服务器,用于分布式培训。

class ServerDef

class SessionCreator:tf.Session的工厂。

class SessionManager:从检查点恢复并创建会话的培训助手。

class SessionRunArgs:表示要添加到Session.run()调用的参数。

class SessionRunContext:提供有关session.run()正在进行的呼叫的信息。

class SessionRunHook:挂钩以扩展对MonitoredSession.run()的调用。

class SessionRunValues:包含结果Session.run()

class SingularMonitoredSession:类似会话的对象,用于处理初始化,恢复和挂钩。

class StepCounterHook:钩子计算每秒的步数。

class StopAtStepHook:钩子请求在指定的步骤停止。

class SummarySaverHook:每N步保存摘要。

class Supervisor:检查点建模和计算摘要的培训助手。

class SyncReplicasOptimizer:要同步的类,聚合渐变并将它们传递给优化器。

class VocabInfo:热门启动的词汇信息。

class WorkerSessionCreator:为worker创建一个tf.Session。

功能

MonitoredTrainingSession(...):创建一个MonitoredSession培训。

NewCheckpointReader(...)

add_queue_runner(...)QueueRunner在图表中添加一个集合。(废弃)

assert_global_step(...):Asserts global_step_tensor是一个标量int VariableTensor

basic_train_loop(...):训练模型的基本循环。

batch(...):创建批量的张量tensors。(废弃)

batch_join(...):运行张量列表以填充队列以创建批量示例。(废弃)

checkpoint_exists(...):检查V1或V2检查点是否存在指定的前缀。

confusion_matrix(...):从预测和标签计算混淆矩阵。

cosine_decay(...):将余弦衰减应用于学习率。

cosine_decay_restarts(...):应用余弦衰减并重新启动学习率。

create_global_step(...):在图形中创建全局步长张量。

do_quantize_training_on_graphdef(...):正在开发一种通用的量化方案tf.contrib.quantize。(废弃)

exponential_decay(...):将指数衰减应用于学习率。

export_meta_graph(...):返回MetaGraphDef原型。可选择将其写入filename。

generate_checkpoint_state_proto(...):生成检查点状态原型。

get_checkpoint_mtimes(...):返回检查点的mtimes(修改时间戳)。

get_checkpoint_state(...):从“检查点”文件返回CheckpointState proto。

get_global_step(...):获得全局步长张量。

get_or_create_global_step(...):返回并创建(如果需要)全局步长张量。

global_step(...):帮助全球迈出的小帮手。

import_meta_graph(...):重新创建保存在MetaGraphDefproto中的Graph 。

init_from_checkpoint(...):使用从给定检查点加载的张量初始化当前变量。

input_producer(...):将输出input_tensor管道的行输出到队列。(废弃)

inverse_time_decay(...):将反时限衰减应用于初始学习速率。

latest_checkpoint(...):查找最新保存的检查点文件的文件名。

limit_epochs(...):返回张量num_epochs时间然后引发OutOfRange错误。(废弃)

linear_cosine_decay(...):将线性余弦衰减应用于学习速率。

list_variables(...):返回检查点中所有变量的列表。

load_checkpoint(...)CheckpointReader找到的检查点的返回值ckpt_dir_or_file

load_variable(...):返回检查点中给定变量的张量值。

match_filenames_once(...):保存匹配模式的文件列表,因此只计算一次。

maybe_batch(...):有条件地创建基于的批量张量keep_input。(废弃)

maybe_batch_join(...):运行张量列表以有条件地填充队列以创建批次。(废弃)

maybe_shuffle_batch(...):通过随机改组条件排列的张量来创建批次。(废弃)

maybe_shuffle_batch_join(...):通过随机改组条件排列的张量来创建批次。(废弃)

natural_exp_decay(...):将自然指数衰减应用于初始学习率。

noisy_linear_cosine_decay(...):将嘈杂的线性余弦衰减应用于学习速率。

piecewise_constant(...):来自边界和间隔值的分段常数。

polynomial_decay(...):将多项式衰减应用于学习速率。

range_input_producer(...):生成队列中从0到限制1的整数。(废弃)

remove_checkpoint(...):删除给定的检查点checkpoint_prefix

replica_device_setter(...):返回a device function以在为副本构建Graph时使用。

sdca_fprint(...):计算输入字符串的指纹。

sdca_optimizer(...):分布式版本的随机双坐标上升(SDCA)优化器

sdca_shrink_l1(...):对参数应用L1正则化收缩步骤。

shuffle_batch(...):通过随机填充张量创建批次。(废弃)

shuffle_batch_join(...):通过随机填充张量创建批次。(废弃)

slice_input_producer(...):产生每一个切片Tensortensor_list。(废弃)

start_queue_runners(...):启动图中收集的所有队列运行程序。(废弃)

string_input_producer(...):将字符串(例如文件名)输出到输入管道的队列。(废弃)

summary_iterator(...):用于Event从事件文件中读取协议缓冲区的迭代器。

update_checkpoint_state(...):更新“检查点”文件的内容。

warm_start(...):使用给定的设置暖启动模型。

write_graph(...):将图形原型写入文件。

Stochastic Gradient Descent(SGD)

最基础的方法就是GD了,将整个数据集放入模型中,不断的迭代得到模型的参数,当然这样的方法计算资源占用的比较大,那么有没有什么好的解决方法呢?就是把整个数据集分成小批(mini-batch),然后再进行上述操作这就是SGD了,这种方法虽然不能反应整体的数据情况,不过能够很大程度上加快了模型的训练速度,并且也不会丢失太多的准确率
参数的迭代公式
w:=w−α∗dww:=w−α∗dw

Momentum

传统的GD可能会让学习过程十分的曲折,这里我们引入了惯性这一分量,在朝着最优点移动的过程中由于惯性走的弯路会变少
m=β∗m−α∗dwm=β∗m−α∗dw
w:=w−mw:=w−m

AdaGrad

这个方法主要是在学习率上面动手脚,每个参数的更新都会有不同的学习率
s=s+dw2s=s+dw2
w:=w−α∗dw/s√w:=w−α∗dw/s

RMSProp

AdaGrad收敛速度快,但不一定是全局最优,为了解决这一点,加入了Momentum部分
s=β∗s+(1−β)dw2s=β∗s+(1−β)dw2
w:=w−α∗dw/s√w:=w−α∗dw/s

Adam

adam是目前比较好的方法,它融合了Momentum和RMSProp方法

# https://www.cnblogs.com/wxshi/p/8645634.html
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as npdef reset_graph(seed=42):tf.reset_default_graph()tf.set_random_seed(seed)np.random.seed(seed)reset_graph()
plt.figure(1, figsize=(10, 8))
x = np.linspace(-1, 1, 100)[:, np.newaxis]  # <==>x=x.reshape(100,1)
noise = np.random.normal(0, 0.1, size=x.shape)
y = np.power(x, 2) + x + noise  # y=x^2 + x+噪音
plt.scatter(x, y)
plt.show()
learning_rate = 0.01
batch_size = 10  # mini-batch的大小class Network(object):def __init__(self, func, **kwarg):self.x = tf.placeholder(tf.float32, [None, 1])self.y = tf.placeholder(tf.float32, [None, 1])hidden = tf.layers.dense(self.x, 20, tf.nn.relu)output = tf.layers.dense(hidden, 1)self.loss = tf.losses.mean_squared_error(self.y, output)self.train = func(learning_rate, **kwarg).minimize(self.loss)SGD = Network(tf.train.GradientDescentOptimizer)
Momentum = Network(tf.train.MomentumOptimizer, momentum=0.5)
AdaGrad = Network(tf.train.AdagradOptimizer)
RMSprop = Network(tf.train.RMSPropOptimizer)
Adam = Network(tf.train.AdamOptimizer)
networks = [SGD, Momentum, AdaGrad, RMSprop, Adam]
record_loss = [[], [], [], [], []]  # 踩的坑不能使用[[]]*5
plt.figure(2, figsize=(10, 8))
with tf.Session() as sess:sess.run(tf.global_variables_initializer())for stp in range(200):index = np.random.randint(0, x.shape[0], batch_size)  # 模拟batchbatch_x = x[index]batch_y = y[index]for net, loss in zip(networks, record_loss):_, l = sess.run([net.train, net.loss], feed_dict={net.x: batch_x, net.y: batch_y})loss.append(l)  # 保存每一batch的loss
labels = ['SGD', 'Momentum', 'AdaGrad', 'RMSprop', 'Adam']
for i, loss in enumerate(record_loss):plt.plot(loss, label=labels[i])
plt.legend(loc="best")
plt.xlabel("steps")
plt.ylabel("loss")
plt.show()

TensorFlow中的优化算法相关推荐

  1. 深度学习中的优化算法串讲

    Datawhale原创 作者:谢文睿,Datawhale成员 寄语:优化算法是一个超参数,一个优化算法不是适合所有损失函数的,没有哪个优化算法是绝对的好或绝对的坏,是要根据损失函数判断的 本文对深度学 ...

  2. louvian算法 缺点 优化_机器学习中的优化算法(1)-优化算法重要性,SGD,Momentum(附Python示例)...

    本系列文章已转至 机器学习的优化器​zhuanlan.zhihu.com 优化算法在机器学习中扮演着至关重要的角色,了解常用的优化算法对于机器学习爱好者和从业者有着重要的意义. 这系列文章先讲述优化算 ...

  3. 【深度学习】一文搞定面试中的优化算法

    深度学习各类优化器 借用古代炼丹的一些名词,我们可以把训练模型中的数据比做炼丹药材,模型比做炼丹炉,火候比做优化器.那么我们知道,同样的药材同样的炼丹炉,但是火候不一样的话,炼出来的丹药千差万别,同样 ...

  4. 深度学习中的优化算法之Adam

    之前在https://blog.csdn.net/fengbingchun/article/details/124909910 介绍过深度学习中的优化算法Adadelta,这里介绍下深度学习的另一种优 ...

  5. tensorflow中Adagrad优化器运用

    tensorflow中Adagrad优化器运用 Adagrad优化器引用API:tensorflow.keras.optimizers.Adagrad 代码实现: #Adagrad v_w += tf ...

  6. 深度学习中的优化算法之RMSProp

    之前在https://blog.csdn.net/fengbingchun/article/details/124766283 中介绍过深度学习中的优化算法AdaGrad,这里介绍下深度学习的另一种优 ...

  7. tensorflow中RMSprop优化器运用

    tensorflow中RMSprop优化器运用 RMSprop优化器引用API:tf.keras.optimizers.RMSprop 代码实现: #RMSprop beta = 0.9 #定义超参数 ...

  8. 深度学习中的优化算法之MBGD

    之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD.SGD.MBGD,它们的 ...

  9. 深度学习中的优化算法之BGD

    之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD.SGD.MBGD,它们的 ...

  10. 机器学习中的优化算法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 在机器学习中,有很 ...

最新文章

  1. LESSON 9.1 随机森林回归器的实现
  2. matlab解调2fsk,2FSK调制解调系统的MATLAB实现
  3. Hadoop开发工具简介
  4. [Sharepoint2007对象模型]第二回:Web应用程序服务(SPWebService)
  5. 【转载保存】java优先队列使用
  6. 轻松的java,轻松进行Java Portlets
  7. jQuery函数 - 左右抖动效果,用于提示
  8. python表示数字6_Python3 数字Number(六)
  9. 简述linux内核中,Linux内核中的文件描述符(一)——基础知识简介
  10. xml Android 冒号,冒号字符在XML元素序列化过程中被编码为x003A
  11. ABP框架 配置权限、本地语言文件、左侧菜单项
  12. 如何拯救你,我的Oculus?
  13. Python地理数据处理 十二:栅格数据读写
  14. 【warning】UserWarning: The parameter ‘pretrained‘ is deprecated since 0.13 and may be removed
  15. 微信小程序实现当前页面多个视频文件只能播放一个视频,其他视频暂停,点击当前暂停当前
  16. 微信公众平台开发的相关问题
  17. VMware卸载不干净导致无法重安
  18. Springboot:拦截器和过滤器
  19. 【算法和数据结构】模拟和暴力
  20. UGUI图集的理解与使用

热门文章

  1. JavaSE学习--单例设计模式
  2. OkHttp之ConnectInterceptor简单分析
  3. 公司规定所有接口都用 POST请求,看不起 get ?这是为什么?
  4. 还在搭建传统IT架构的你,正在慢慢被行业淘汰
  5. window location href 手机端无法跳转_JavaScriptBOM__History_location(二十)
  6. qfileinfolist 取中间_公司起名:网络公司名字起名寓意如何取寓意成功的网络公司名字...
  7. 图表位置下移_excel图表技能:如何更准确的表现营业额的变化趋势
  8. java boolean 大小_Java 中 boolean 类型占用多少个字节 [MD]
  9. golang1.1-基础环境的配置以及事项
  10. python ttk.notebook_python - ttk.Notebook每个选项卡上的不同网格大小 - 堆栈内存溢出...