YJango的TensorFlow整体把握

目前主流的TensorFlow,用tensorflow这样工具的原因是:它允许我们用计算图(Computational Graphs)的方式建立网络。同时又可以非常方便的对网络进行操作。

下面就是对计算图的直观讲解。

比喻说明:

  • 结构:计算图所建立的只是一个网络框架。在编程时,并不会有任何实际值出现在框架中。所有权重和偏移都是框架中的一部分,初始时至少给定初始值才能形成框架。因此需要initialization初始化。
  • 比喻:计算图就是一个管道。编写网络就是搭建一个管道结构。在投入实际使用前,不会有任何液体进入管道。而神经网络中的权重和偏移就是管道中的阀门,可以控制液体的流动强弱和方向。在神经网络的训练中,阀门会根据数据进行自我调节、更新。但是使用之前至少要给所有阀门一个初始的状态才能形成结构。用计算图的好处是它允许我们可以从任意一个节点处取出液体。

用法说明:

请类比管道构建来理解计算图的用法

构造阶段(construction phase):组装计算图(管道)

  • 计算图(graph):要组装的结构。由许多操作组成。
  • 操作(ops):接受(流入)零个或多个输入(液体),返回(流出)零个或多个输出。
  • 数据类型:主要分为张量(tensor)、变量(variable)和常量(constant)
  • 张量:多维array或list(管道中的液体)
    • 创建语句
tensor_name=tf.placeholder(type, shape, name)
  • 变量:在同一时刻对图中所有其他操作都保持静态的数据(管道中的阀门)
    • 创建语句
name_variable = tf.Variable(value, name)
  • 初始化语句
#个别变量 
init_op=variable.initializer() 
#所有变量 
init_op=tf.initialize_all_variables() 
#注意:
init_op的类型是操作(ops),加载之前并不执行
  • 更新语句
update_op=tf.assign(variable to be updated, new_value)
  • 常量:无需初始化的变量
    • 创建语句
name_constant=tf.constant(value)

执行阶段(execution phase):使用计算图(获取液体)

  • 会话:执行(launch)构建的计算图。可选择执行设备:单个电脑的CPU、GPU,或电脑分布式甚至手机。
    • 创建语句
#常规 
sess = tf.Session() 
#交互 
sess = tf.InteractiveSession() 
#交互方式可用tensor.eval()获取值,ops.run()执行操作 
#关闭 
sess.close()
  • 执行操作:使用创建的会话执行操作
    • 执行语句
sess.run(op)
  • 送值(feed):输入操作的输入值(输入液体)
    • 语句
sess.run([output], feed_dict={input1:value1, input2:value1})
  • 取值(fetch):获取操作的输出值(得到液体)
    • 语句
#单值获取 
sess.run(one op) 
#多值获取 
sess.run([a list of ops])
超智能体
超智能体

分享简单易懂深度学习知识。

入门TensorFlow
1
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

推荐文章
暂无评论
暂无评论~