Tensorflow学习备忘录
刚刚开始学习 tensorflow
很多东西不是很明白,所以在这里逐条记录,方便记忆和日后的查阅。不过话又说回来,为什么这API的命名如此混乱,一会大写一会小写?
开发环境
系统:Ubuntu 16.04 (WSL)
Python 版本:3.5.2-64bit
Tensorflow 版本: 1.14.0
张量
张量在tensorflow中表示数据的标准方式。简单地说,张量就是多维数组,时二维表到更高维度的扩展。
API 记录
constant
通过 tf.constant()
生成常量张量。
|
|
通过定义形状(shape
)可以生成同属性(dtype
)同值(value
)的常量矩阵。其中 verify_shape
规定了 形状是否可以被改变,默认不允许。
|
|
同样可以单独定义
|
|
Variable
变量张量,变量主要是在机器学习中用于训练时候进行的输入和输出变化。
|
|
get_variable
get_variable
也是初始化一个变量,通过 initializer
进行初始化。
|
|
初始化的操作有如下,详情见操作中表初始化操作。
通过 get_variable
初始化的张量,在进行session
运行的时候,要通过 global_variables_initializer
进行全局变量初始化。
注意 在使用该方法时,如果遇到命名冲突会进行报错。
placeholder
placeholder
主要是声明一个张量( Tensor
),但是没有进行赋值,只给该张量规定了类型( dtype
),形状( shape
),和名称( name
)。其中 形状,省略后为一维矩阵,名称可以省略。
|
|
该条语句生成了一个 2×2
的矩阵,类型全为 float32
,名称为 num1
。
当前 num1
没有任何值,要想在后期使用它,在使用时应该给予赋值。
Session
所有的运行都要在 Session
中,所有的操作都要在 Session 中进行。
- 首先要创建会话 Session
sess = tf.Session()
- 通过
sess.run()
进行计算 session.close()
关闭
Session.run()
|
|
对于 run 方法有四个参数。
- fetches 可以看作一个操作,要将执行的操作进行传入。
- feed_dict 可以对placeholder 进行赋值操作。对 placeholder 声明的张量进行赋值。
- options
- run_metadata
操作
Tensorflow 在数据流图上都是基于操作,故记录一些操作。
操作类型 | 典型操作 |
---|---|
基础算术 | add/multiply/mod/sqrt/sin/trace/argmin |
数组运算 | size/rank/split/reverse/cast/one_hot/quantize |
梯度裁剪 | clip_by_value/clip_by_norm/clip_by_global_norm |
逻辑控制和调试 | identity/logical_and/equal/less/is_finite/is_nan |
数据流控制 | enqueue/dequeue/size/take_grad/apply_grad |
初始化操作 | zeros_initializer/random_normal_initializer/orthogonal_initializer |
神经网络运算 | convolution/pool/bias_add/softmax/dropout/erosion2d |
随机运算 | random_normal/random_shuffle/multinomial/random_gamma |
字符串运算 | string_to_hash_bucket/reduce_join/substr/encode_base64 |
图像处理运算 | encode_png/resize_images/rot90/hsv_to_rgb/adjust_gamma |
transpose
用于矩阵的交换,如果是二维矩阵表示矩阵转置,三位或者更高维度的矩阵,可以表示互换。
|
|
conv2d
该API是用于卷积神经网络的卷积操作,tf.nn.conv2d(x,w,strudes,padding)
。有着四个参数
truncated_normal
truncated_normal(shape, dtype, seed=0, seed2=0, name=None)
该函数会产生正太分布。
- seed
- seed2