Tensorflow介绍

1. Tensor

在 Tensorflow 中,数据并没有作为整数、浮点数或字符串储存。这些值被封装到了一个被称为 tensor 的对象中。Tensors 有不同的大小:

# A is a 0-dimensional int32 tensor
A = tf.constant(1234) 
# B is a 1-dimensional int32 tensor
B = tf.constant([123,456,789]) 
# C is a 2-dimensional int32 tensor
C = tf.constant([ [123,456,789], [222,333,444] ])

通过 tf.constant() 返回的 tensor 被称为 constant tensor,因为 tensor 的值从不改变。

在这里插入图片描述
一个 “TensorFlow Session” ,是一个运行以上 graph 的环境。session 负责将操作分配给GPU和/或CPU,包括远程机器。示例代码如下:

import tensorflow as tf

# Create TensorFlow object called hello_constant
hello_constant = tf.constant('Hello World!') # 创建 tensor

with tf.Session() as sess: # 使用 tf.Session() 创建一个叫做 sess 的 session 实例
    # Run the tf.constant operation in the session
    output = sess.run(hello_constant) # 评估 session 并返回结果
    print(output)

1.1 tf.placeholder()

在 tensorflow 中没有办法直接设置 x x x 到数据集中,因为随着时间的推移,你会希望你的TensorFlow 模型接受不同的数据集与不同的参数。此时引入了 tf.placeholder ()

tf.placeholder () 返回一个 tensor,它从传递给 tf.session.run() 函数的数据中获得它的值,允许 session 运行之前设置输入。

tf.session.run() 内使用参数 feed_dict 来设置 placeholder tensor,不仅仅可以只设置一个值,还可以同时设置多个:

x = tf.placeholder(tf.string)
y = tf.placeholder(tf.int32)
z = tf.placeholder(tf.float32)

with tf.Session() as sess:
    output = sess.run(x, feed_dict={x: 'Hello World'})
    output = sess.run(x, feed_dict={x: 'Test String', y: 123, z: 45.67})

1.2 TensorFlow Math

1.2.1 加法

x = tf.add(5, 2)  # 7

返回和作为 tensor

1.2.2 减法和乘法

x = tf.subtract(10, 4) # 6
y = tf.multiply(2, 5)  # 10

1.2.3 类型转换

可能需要在类型之间进行转换,以使某些操作符协同工作。如下面语句会导致出错:

tf.subtract(tf.constant(2.0),tf.constant(1))  # Fails with ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int32: 

这里是因为 1 是一个整数而常量 2.0 是一个浮点数,在做 subtract 时希望它们类型相符。

可以选择的一种方式是,在做 subtract 前,转换 2.0 为整数:

tf.subtract(tf.cast(tf.constant(2.0), tf.int32), tf.constant(1))   # 1

2. 多项式逻辑回归分类法(multionmial logistic classification)

逻辑分类器就是所谓的线性分类器,它将比如图像的像素作为输入,对其应用线性函数,来生成预测。线性函数就是一个巨大的矩阵乘法器,它将所有输入作为一个大的向量,用 X X X 表示,然后将它们与一个矩阵相乘,来生成预测,每个输出类一个。在整个过程中,我们用 X X X 表示输入, W W W 表示权重, b b b 表示偏差项。矩阵的权重和偏差需要用到机器学习来计算,训练模型意味着我们将尝试找出一些值,能很好预测结果的权重和偏差值。在这里插入图片描述那么如何使用得分来执行分类呢,作为输入的每幅图像,有且仅有一个标签,我们要将这些得分转换成概率,让正确类的概率尽可能接近1,而其他各类的概率接近于 0。
在这里插入图片描述将得分转换成概率的方法,就是运用一个 Softmax 函数,在这里用 S S S 表示它的样子。这些概率的总和为 1,当原始得分较大时,概率值就较大;得分较小时则小。得分,在逻辑回归中,通常被称为 LOGITS
在这里插入图片描述

2.1 过程小结

  1. 输入数据通过一个线性模型运算后,将被转换为对数几率。
  2. 这些对数几率,也就是得分,可以通过 softmax 方法转化为概率。
  3. 紧接着通过交叉熵方法去比较,输出的概率向量与经过 One-hot Coding 的标签向量的差异

在这里插入图片描述

2.2 交叉熵计算方式

在这里插入图片描述

2.3 最小化交叉熵

最小化交叉熵,也就是说,要使之对正确分类距离要足够小,对错误分类的距离足够大。可以通过以下公式来衡量,求出对所有训练集样本和所有现有标签的距离之和,这个和被称为训练损失函数:
£ = 1 N ∑ i D ( S ( w x i + b ) , L i ) £=\frac{1}{N} \sum_{i} D\left(S\left(w x_{i}+b\right), L_{i}\right) £=N1iD(S(wxi+b),Li)

训练集中的每个样本,都将被乘上巨大的 W W W 矩阵,并且它们都将被加起来,得到巨大的和。我们希望每一个距离值都很小,也就是说,分类器能够对训练集中的每个样本都能很好地分类,我们希望这个训练损失函数值很小

2.4 归一化输入

在计算时,把一个非常小的值加到一个非常大的值上会导致很多错误,我们希望,这一巨大误差函数所涉及的值,不要太大也不要太小。一个较好的指导原则就是,使变量尽可能保持0均值,和相同的方差,即:
μ ( x i ) = 0 σ ( X i ) = σ ( X j ) \mu(x_i)=0\\\sigma(X_i)=\sigma(X_j) μ(xi)=0σ(Xi)=σ(Xj)
在这里插入图片描述

二级目录

三级目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值