# 声明操作符
现在,我们必须了解我们可以添加到 TensorFlow 图的其他操作。
## 做好准备
除了标准算术运算之外,TensorFlow 还为我们提供了更多我们应该了解的操作以及如何在继续操作之前使用它们。同样,我们可以通过运行以下代码来创建图会话:
```py
import tensorflow as tf
sess = tf.Session()
```
## 操作步骤
TensorFlow 对张量有标准操作,即`add()`,`sub()`,`mul()`和`div()`。请注意,除非另有说明,否则本节中的所有操作都将按元素评估输入:
1. TensorFlow 提供了`div()`和相关函数的一些变体。
2. 值得一提的是`div()`返回与输入相同的类型。这意味着如果输入是整数,它确实返回了分区的底线(类似于 Python 2)。要返回 Python 3 版本,它在分割之前将整数转换为浮点数并始终返回浮点数,TensorFlow 提供`truediv()`函数,如下所示:
```py
print(sess.run(tf.div(3, 4)))
0
print(sess.run(tf.truediv(3, 4)))
0.75
```
1. 如果我们有浮点数并想要整数除法,我们可以使用`floordiv()`函数。请注意,这仍然会返回一个浮点数,但它会向下舍入到最接近的整数。这个函数如下:
```py
print(sess.run(tf.floordiv(3.0,4.0)))
0.0
```
1. 另一个重要函数是`mod()`。此函数返回除法后的余数。它如下:
```py
print(sess.run(tf.mod(22.0, 5.0)))
2.0
```
1. 两个张量之间的交叉积通过`cross()`函数实现。请记住,交叉乘积仅针对两个三维向量定义,因此它只接受两个三维张量。以下代码说明了这种用法:
```py
print(sess.run(tf.cross([1., 0., 0.], [0., 1., 0.])))
[ 0\. 0\. 1.0]
```
1. 这是一个更常见的数学函数的紧凑列表。所有这些函数都以元素方式运行:
| | |
| --- | --- |
| `abs()` | 一个输入张量的绝对值 |
| `ceil()` | 一个输入张量的向上取整函数 |
| `cos()` | 一个输入张量的余弦函数 |
| `exp()` | 基于`e`指数的一个输入张量 |
| `floor()` | 一个输入张量的向下取整函数 |
| `inv()` | 一个输入张量的乘法逆(1 / x) |
| `log()` | 一个输入张量的自然对数 |
| `maximum()` | 元素最多两个张量 |
| `minimum()` | 两个张量的元素分钟 |
| `neg()` | 负输入张量为负 |
| `pow()` | 第一个张量元素提升到第二个张量元素 |
| `round()` | 舍入一个输入张量 |
| `rsqrt()` | 一个超过一个张量的平方根 |
| `sign()` | 返回-1,0 或 1,具体取决于张量的符号 |
| `sin()` | 一个输入张量的正弦函数 |
| `sqrt()` | 一个输入张量的平方根 |
| `square()` | 一个输入张量的平方 |
1. 专业数学函数:有一些特殊的数学函数可以在机器学习中使用,值得一提,TensorFlow 为它们提供了内置函数。同样,除非另有说明,否则这些函数在元素方面运行:
| | |
| --- | --- |
| `digamma()` | Psi 函数,`lgamma()`函数的导数 |
| `erf()` | 高斯误差函数,元素方式,一个张量 |
| `erfc()` | 一个张量的互补误差函数 |
| `igamma()` | 降低正则化的不完全伽玛函数 |
| `igammac()` | 上正则化不完全伽马函数 |
| `lbeta()` | β函数绝对值的自然对数 |
| `lgamma()` | 伽玛函数绝对值的自然对数 |
| `squared_difference()` | 计算两个张量之间差异的平方 |
## 工作原理
重要的是要知道我们可以使用哪些函数,以便我们可以将它们添加到我们的计算图中。我们将主要关注前面的函数。我们还可以生成许多不同的自定义函数作为前面的组合,如下所示:
```py
# Tangent function (tan(pi/4)=1)
print(sess.run(tf.tan(3.1416/4.)))
1.0
```
## 更多
如果我们希望向我们未在此处列出的图添加其他操作,我们必须从前面的函数创建自己的操作。以下是我们之前未使用的操作示例,我们可以将其添加到图中。我们选择使用以下代码添加自定义多项式函数`3x^2 - x + 10`:
```py
def custom_polynomial(value):
return tf.sub(3 * tf.square(value), value) + 10
print(sess.run(custom_polynomial(11)))
362
```
- TensorFlow 入门
- 介绍
- TensorFlow 如何工作
- 声明变量和张量
- 使用占位符和变量
- 使用矩阵
- 声明操作符
- 实现激活函数
- 使用数据源
- 其他资源
- TensorFlow 的方式
- 介绍
- 计算图中的操作
- 对嵌套操作分层
- 使用多个层
- 实现损失函数
- 实现反向传播
- 使用批量和随机训练
- 把所有东西结合在一起
- 评估模型
- 线性回归
- 介绍
- 使用矩阵逆方法
- 实现分解方法
- 学习 TensorFlow 线性回归方法
- 理解线性回归中的损失函数
- 实现 deming 回归
- 实现套索和岭回归
- 实现弹性网络回归
- 实现逻辑回归
- 支持向量机
- 介绍
- 使用线性 SVM
- 简化为线性回归
- 在 TensorFlow 中使用内核
- 实现非线性 SVM
- 实现多类 SVM
- 最近邻方法
- 介绍
- 使用最近邻
- 使用基于文本的距离
- 使用混合距离函数的计算
- 使用地址匹配的示例
- 使用最近邻进行图像识别
- 神经网络
- 介绍
- 实现操作门
- 使用门和激活函数
- 实现单层神经网络
- 实现不同的层
- 使用多层神经网络
- 改进线性模型的预测
- 学习玩井字棋
- 自然语言处理
- 介绍
- 使用词袋嵌入
- 实现 TF-IDF
- 使用 Skip-Gram 嵌入
- 使用 CBOW 嵌入
- 使用 word2vec 进行预测
- 使用 doc2vec 进行情绪分析
- 卷积神经网络
- 介绍
- 实现简单的 CNN
- 实现先进的 CNN
- 重新训练现有的 CNN 模型
- 应用 StyleNet 和 NeuralStyle 项目
- 实现 DeepDream
- 循环神经网络
- 介绍
- 为垃圾邮件预测实现 RNN
- 实现 LSTM 模型
- 堆叠多个 LSTM 层
- 创建序列到序列模型
- 训练 Siamese RNN 相似性度量
- 将 TensorFlow 投入生产
- 介绍
- 实现单元测试
- 使用多个执行程序
- 并行化 TensorFlow
- 将 TensorFlow 投入生产
- 生产环境 TensorFlow 的一个例子
- 使用 TensorFlow 服务
- 更多 TensorFlow
- 介绍
- 可视化 TensorBoard 中的图
- 使用遗传算法
- 使用 k 均值聚类
- 求解常微分方程组
- 使用随机森林
- 使用 TensorFlow 和 Keras