方法 | 返回值类型 | 参数 | 说明 |
张量 | |||
.constant() | Tensort 张量 实例t | value | 创建一个常量tensor |
dtype=None | 输出类型 | ||
shape=None | 返回tensor的形状 | ||
name=’Const’ | 张量名 | ||
verify_shape=False | 是否保留输入数据的形状且不能被更改. True若shape与输入形状不一致则报错 | ||
t.device | str | 表示tensor将被产生的设备名称 | |
t.dtype | 元素类型 | ||
t.graph | 此tensor被哪个图所有 | ||
t.name | 张量名 | ||
t.op | 产生这个tensor作为输出的操作 | ||
t.shape | TensorShape | tensor的形状 | |
t.value_index | 表示这个tensor在其操作结果中的索引 | ||
t.consumers() | list | 返回消耗这个tensor的操作列表 | |
t.eval() | ndarray | feed_dict=None | 用于placeholder赋初始值{placeholder_object: value} |
session=None | 用来计算此tensor的session | ||
t.get_shape() | TensorShape | tensor的形状 | |
t.set_shape() | None | shape | 更新tensor的形状, verify_shape=False |
.zeros() | Tensor | (shape, dtype=tf.float32, name=None) 按shape生成一个全0 tensor | |
.zeros_like() | Tensor | (tensor, dtype=None, name=None) 按tensor的shape创建一个新全0 tensor | |
.ones() .ones_like() | Tensor | 参考上面两个, 创建全1 tensor | |
.fill() | Tensor | (dims, value, name=None) 值全为value, 形状为dims的tensor | |
.linspace() | 1DTensor | 创建包含num个元素, 且步长固定的tensor | |
start | 起始值(包含) | ||
stop | 结束值(包含) | ||
num | 步长 = (stop – start) / (num-1) | ||
name=None | 张量名 | ||
.range() | 1DTensor | (start, limit, delta=1, name=’range’) 创建范围为[start, limit)步长为delta的tensor | |
.placeholder() 占位符(feed_dictation) run的时候才赋初始值 | Tensor | dtype | 数据类型, 必须制定, 推荐float32(或1) |
shape=None | 指定返回张量的形状, None表示任意形状, 某一维为None则表示次维不做限制 | ||
name=None | 张量名 | ||
.nn.embedding_ lookup() | Tensor | params | 多维数据, |
ids | 多维数据, 值为params的索引, 返回params的对应值 | ||
partition_strategy=’mod’ | |||
name=None | 张量名 | ||
validate_indices=True | |||
max_norm=None | |||
.layers.dense() 全连接层 | Tensor | ||
inputs | 二维tensor | ||
units | 输出空间的维度(该层神经单元节点数) | ||
activation及其以后参数同tf.layers.conv1d | |||
变量 | |||
.Variable() | Variable 变量 实例v | initial_value | Tensor or Tensor_like. 变量的初始化值. 必须指定shape, 除非validate_shape=False |
trainable=True | 是否将该变量添加到图形集合`GraphKeys.TRAINABLE_VARIABLES` | ||
collections=None | 图表集合键的列表。新的变量被添加到这些集合中。默认为`[GraphKeys.GLOBAL_VARIABLES]` | ||
validate_shape=True | 是否允许变量初始化为未知形状的值 | ||
caching_device=None | 描述设备的字符串, 表示哪个设备用来读取缓存. 默认是device | ||
name=None | 变量名 | ||
variable_def=None | |||
dtype=None | 指定数据类型 | ||
expected_shape=None | TensorShape类型. 要是设置了, 那么初始的值会是这种形状 | ||
import_scope=None | |||
v.device | 设备名称 | ||
v.dtype | 数据类型 | ||
v.graph | 存放变量的图 | ||
v.initial_value | Tensor | 变量的初始值 | |
v.initializer | 变量的初始化器 | ||
v.name | 变量名 | ||
v.op | 产生这个variable作为输出的操作 | ||
v.assign() | Variable | value | 为变量指定一个新值(形状相同) |
use_locking=False | |||
v.assign_add() | Variable | delta, use_locking | 为这个变量加上一个值(形状相同) |
v.assign_sub() | Variable | delta, use_locking | 为这个变量减去一个值(形状相同) |
v.count_up_to() | Variable | limit | 上限值. 当Op运行时, 它试图将变量+1, 如果增加变量使其超过限制, 将会引发异常 |
v.eval() | session=None | 在一个session里计算并返回变量值 | |
v.get_shape() | 返回变量的形状 | ||
v.initialized_value() | Tensor | 返回已经初始化变量的值 | |
v.load() | Variable | value | 新的变量值. 把新值载入到变量里 |
session=None | 用来估算这个变量的Session | ||
v.read_value() | Tensor | 返回这个变量的值 | |
v.scatter_sub() | sparse_delta | ||
use_locking=False | |||
v.set_shape() | Variable | shape | 改变变量形状 |
.get_variable() | Variable | name | 新的或现有变量名(可用于变量复用) |
shape=None | 新变量或现有变量的形状 | ||
dtype=None | 新变量或现有变量的类型 | ||
initializer=None | 变量的初始值设定项 | ||
regularizer=None | |||
trainable=True | 是否将变量添加到图形集合 | ||
collections=None | 图形集合键列表 | ||
caching_device=None | |||
partitioner=None | |||
validate_shape=True | 是否允许变量初始化为未知形状的值 | ||
use_resource=None | |||
custom_getter=None | |||
将value赋给ref来更新ref | |||
.assign() | Variable | ref | Veriable |
value | 跟ref同类型的Tensor | ||
validate_shape=None | True: value需和ref形状相同(默认) | ||
False: ref将对value的形状进行引用 | |||
use_locking=None | |||
name=None | 操作的名称 | ||
.global_variables() | 返回全局变量 | ||
.local_variables() | 返回局部变量 | ||
.variables_ initializer() | var_list | 待初始化变量列表 | |
name=’init’ | 操作的名称 | ||
.global_variables_ initializer() | Op | (替换tf.initialize_all_variables()的新方法)返回一个初始化所有全局变量的操作. 类似variables_initializers(global_variables()) | |
.local_variables_ initializer() | Op | 返回一个初始化所有局部变量的操作 | |
Graph(图) | |||
.get_default_graph() | 返回默认图 | ||
.Graph() | 实例g | 创建一个图 | |
g.building_function | |||
g.finalized | 若此图被终止了则返回True | ||
g.graph_def_versions | |||
g.seed | 此图的图层随机种子 | ||
g.version | |||
g.add_to_collection() | |||
name | |||
value | |||
g.as_default() | with…: | 将此图设为默认, 其包含的张量将在此图中 | |
g.device() | matmul_on_gpu | 参见tf.device | |
g.finalize() | 结束这个Graph, 使得它只读 | ||
g.get_all_collection_ key() | list | 返回Graph中的collection列表 | |
g.get_operation_ by_name() | name | 根据操作名返回操作 | |
g.get_operations() | list | 返回图中操作列表 | |
g.get_tensor_by_ name() | Tensor | name | 根据张量名返回tensor |
g.is_feedable() | bool | tensor | 判断tensor能否被feed |
g.is_fetchable() | bool | tensor_or_op | 判断tensor或op能否被取到 |
g.name_scope() | 参考tf.name_scope() | ||
Session | |||
.InteractiveSession() | 实例s | 创建一个新的session并设为默认 | |
target=” | 连接执行引擎, 默认in-process | ||
graph=None | 要计算的graph | ||
config=None | |||
.Session() | 实例s | 创建一个新的session, 包含了操作对象执行的环境 | |
target=” | 连接执行引擎, 默认in-process | ||
graph=None | 要计算的graph | ||
config=None | |||
s.graph | “投放”到session中的图 | ||
s.graph_def | 图的描述 | ||
s.sess_str | |||
s.run() | 运行操作计算tensor | ||
fetches | 图中的一个元素, 或元素列表. 或一个字典, 返回也将是字典, key不变, 值变为运算后的值 | ||
feed_dict=None | 用于placeholder赋初始值 | ||
options=None | |||
run_metadata=None | |||
s.close() | 关闭这个session | ||
s.as_default() | with…: | 将此对象设为默认的session | |
优化器Optimizer(tf.train) | |||
.Optimizer() | 优化器类的基类(基本不用) | ||
.GradientDescent Optimizer() | Op | 创建一个梯度下降算法的优化器 | |
learning_rate | 要是用的学习率 | ||
use_locking=False | |||
name=’GradientDescent’ | 操作的名称 | ||
Op.compute_ gradients() | |||
loss | 待减小的值 | ||
var_list=None | 默认GraphKey.TRAINABLE_VARIABLES | ||
gate_gradients= GATE_OP | |||
aggregation_method=N | |||
colocate_gradients_with_ ops=False | |||
grad_loss=None | |||
.AdadeltaOptimizer | 实现了Adadelta算法的优化器, 可以算是Adagrad算法的改进版 | ||
learning_rate=0.001 | 学习率 | ||
rho=0.95 | 衰减率 | ||
epsilon=1e-08 | |||
use_locking=False | |||
name=’Adadelta’ | 操作的名称 | ||
.AdagradOptimizer | 实现了Adagrad算法的优化器 | ||
learning_rate | 学习率 | ||
initial_accumulator_ value=0.1 | |||
use_locking=False | |||
name=’Adagrad’ | 操作的名称 | ||
.Momentum Optimizer() | |||
.AdamOptimizer() | |||
数学函数(Math)点击跳转到官方API(有墙) | |||
.argmax() | Tensor | 返回指定维度最大值的位置 | |
input | Tensor | ||
axis=None | 默认维度0 | ||
name=None | 操作名称 | ||
output_type=tf.int64 | tf.int32或tf.int64 | ||
.argmin() | Tensor | 同.argmax但作用相反 | |
.matmul() | Tensor | 计算矩阵的积 | |
a,b | 需要计算的两个矩阵 | ||
transpose_a=False | 是否将a计算前进行转置 | ||
transpose_b=False | 是否将b计算前进行转置 | ||
adjoint_a=False | 是否将a计算前进行共轭转置 | ||
adjoint_b=False | 是否将b计算前进行共轭转置 | ||
a_is_sparse=Fasle | a是否是稀疏矩阵 | ||
b_is_sparse=Fasle | b是否是稀疏矩阵 | ||
随机值 | |||
.random_normal() | Tensor | 返回一个指定形状,被随机正态分布值填充的tensor | |
shape | 指定返回张量的形状 | ||
mean=0.0 | 正态分布的均值 | ||
stddev=1.0 | 正态分布的标准差 | ||
dtype=tf.float32 | 输出类型: float32, float64, int32或int64 | ||
seed=None | 随机数种子 | ||
name=None | 张量名 | ||
.truncated_normal() | Tensor | 返回一个指定形状,被截断正态分布(truncated normal distribution)值填充的tensor(参数同上) | |
.random_unifrom() | Tensor | 服从均值分布的随机数, 区间为[minval, maxval) | |
shape | 指定返回张量的形状 | ||
minval=0 | 随机值范围的下界(默认[0, 1)) | ||
maxval=None | 随机值范围的上界(int则必须指定此值) | ||
dtype, seed, name | 同上 | ||
.random_shuffle() | Tensor | 在第一个维度随机打乱顺序(可在随机梯度下降的时候用) | |
value | 待打乱的tensor | ||
seed, name | 同上 | ||
形状相关操作 | |||
.shape() | Tensor | 返回输入Tensor的形状 | |
input | 输入的Tensor | ||
name=None | 操作的名称 | ||
out_type=tf.int32 | 输出数据的数据类型 | ||
.shape_n() | |||
.size() | 返回输入Tensor的元素数量(参数同tf.shape) | ||
.rank() | (input, name=None)返回tensor的维度数 | ||
.reshape() | Tensor | 改变一个tensor的形状 | |
tensor | 输入tensor | ||
shape | tensor形状(某个分量可以是-1, 将将自动计算此值) | ||
name=None | 操作的名称 | ||
.squeeze() | |||
.expand_dims() | |||
.reduce_max() 参考np.max | Tensor | input_tensor | 传入一个tensor或可转换为tensor的数据 |
axis=None(原reduction_indices) | 选择操作的维度, 默认操作全部数据 | ||
keep_dims=False | 是否保留原维度, 否则计算后维度降低 | ||
name=None | 张量名 | ||
.reduce_* | Tensor | 参考.reduce_max参数 | 参考np.* |
基本神经网络组件 | |||
激活函数(输入输出维度一致) | |||
.nn.relu() | Tensor | 计算修正线性单元 | |
features | tensor | ||
name=None | 操作的名称 | ||
.nn.relu6() | |||
.nn.crelu() | |||
.nn.elu() | |||
.nn.softsign() | |||
.nn.dropout() | Tensor | 随机丢弃一部分神经元 (有助于防止过度拟合) | |
inputs | Tensor | ||
rate=0.5 | 丢包率 | ||
noise_shape=None | |||
seed=None | 随机种子 | ||
training=False | |||
name=None | 操作名称 | ||
.nn.bias_add() | |||
.sigmoid() | |||
.tanh() | |||
分类 | |||
.nn.sigmoid_cross_ entropy_with_logits() | |||
.nn.softmax() | Tensor | softmax = tf.exp(logits) / tf.reduce_sum(tf.exp(logits), dim) | |
logits | Tensor | ||
dim=-1 | 运算的维度, 默认最后一个维度 | ||
name=None | 操作名称 | ||
.nn.log_softmax() | Tensor | logsoftmax = logits – log(reduce_sum(exp(logits), dim)) | |
参数同.nn.softmax() | |||
.nn.softmax_cross_ entropy_with_logits() | Tensor | 计算交叉熵(禁止使用位置参数)(损失函数, 越小模型越优) | |
labels=None | 有效概率分布 | ||
logits=None | 估计概率分布 | ||
dim=-1 | 维度, 默认最后一个维度 | ||
name=None | 操作名称 | ||
.nn.sparse_softmax_ cross_entropy_with_ logits() | |||
.nn.weighted_cross_ entropy_with_logits() | |||
各种卷积网络 | |||
基本卷积操作 | |||
.layers.conv1d() | Tensor | inputs | 张量输入 |
filters | 整数, 输出空间的维数(即, 卷积核的数量) | ||
kernel_size | 一个整数或一个整数的元组/列表, 指定1D卷积窗的长度 | ||
strides=1 | 一个整数或一个整数的元组/列表, 指定卷积的步幅长度 | ||
padding=’valid’ | ‘valid’或’same’不区分大小写 | ||
data_format= ‘channels_last’ | |||
dilation_rate=1 | |||
activation=None | 激活函数, 默认线性激活 | ||
ues_bias=True | 是否使用偏置 | ||
kernel_initializer=None | 卷积核初始化 | ||
bias_initializer= tf.zeros_initializer() | 偏置初始化, 默认初始化为0 | ||
kernel_regularizer=None | 卷积核化的正则化 | ||
bias_regularizer=None | 偏置项的正则化 | ||
activity_regularizer=None | 输出的正则化函数 | ||
kernel_constraint=None | |||
bias_constraint=None | |||
trainable=True | 该层的参数是否参与训练, True则变量加入到图集合中 | ||
name=None | 该层的名称 | ||
reuse=None | 是否重复使用参数 | ||
.layers.conv2d() | Tensor | 二维卷积 | |
参数同.layers.conv1d, 只列出不同 | |||
kernel_size | 一个整数或2个整数的元组/列表, 指定2D卷积窗口的高度和宽度. 一个整数表示高=宽 | ||
strides | 一个整数或2个整数的元组/列表, 指定沿高度和宽度的步幅长度 | ||
dilation_rate | |||
.nn.conv2d() | Tensor | 二维卷积 | |
input | 输入 | ||
filter | [滤波器高,滤波器宽,深度(同输入),滤波器个数(输出的深度 )] | ||
strides | 滑动步长, 一般为[1, x_strides, y_strides, 1] | ||
padding | ‘SAME’会有0填充, 使步长为1时保持输入输出尺寸不变, 而’VALID’则采取丢弃 | ||
use_cudnn_on_gpu=N | |||
data_format=None | 指明输入数据和输出数据的格式. ‘NHWC’: 数据存储格式为[batch, in_height, in_width, in_channels]; ‘NCHW’: 数据存储格式为[batch, in_channels, in_height, in_width] | ||
name=None | 操作的名称 | ||
.nn.atrous_conv2d() | Tensor | 空洞卷积(没有stride参数, 因为被固定为了1) | |
value | 4DTensor, 需要’NHWC’格式 | ||
filters | [滤波器高,滤波器宽,深度(同输入),滤波器个数(输出的深度 )] | ||
rate | 插入(rate-1)数量的’0′ | ||
padding | ‘VALID’或’SAME’. ‘VALID’返回:[batch, height-2*(filter_width-1), width-2*(filter_height-1), out_channels]的Tensor; ‘SAME’返回:[batch, height, width, out_channels]的Tensore | ||
name=None | 操作的名称 | ||
池化操作(Pooling) | |||
.nn.avg_pool() | Tensor | 平均 | |
value | [batch, height, width, channels] | ||
ksize | 滤波器形状, 一般二维图像为[1,高,宽,1] | ||
strides | 步长, 一般为[1, x_strides, y_strides, 1] | ||
padding | ‘VALID’或’SAME’ | ||
date_format=’NHWC’ | ‘NHWC’或’NCHW’ | ||
name=None | 操作名 | ||
.nn.max_pool() | |||
.nn.max_pool_with_ argmax() | |||
.nn.avg_pool3d() | |||
.nn.max_pool3d() | |||
.nn.fractional_avg_ pool() | |||
.nn.fractional_max_ pool() | |||
.nn.pool() | |||
.device() | with…: | ‘/cpu:0’ | 指定运算设备为CPU, 即使多个CPU也不区分. |
‘/gpu:n’ | 多个GPU的名称是不同的, 第一个为’/gpu:0′ | ||
.name_scope() | with…: | name | 在其下使用Variable, 变量名(V_n)前会被加上’name/…’且相同V_n会自动添加后缀加以区分, 使用get_variable, V_n不会变化, 且出现相同V_n会报错 |
default_name=None | 如果`name`参数是`None`,则使用默认名称 | ||
values=None | |||
.variable_scope() | with…as sc: | name_or_scope | Variable以及get_variable变量名(V_n)前面都会被加上’name/…’但只有Variable的V_n会自动加后缀区分, 而在get_variable重复V_n前面加上sc.reuse_variables()可实现变量复用(指向同一变量)不加则报错 |
default_name=None | 如果`name_or_scope`参数是`None`,则使用默认名称 | ||
values=None | |||
initializer=None | 此范围内变量的默认初始值设定项 | ||
regularizer=None | 此范围内的变量的默认regularizer | ||
caching_device=None | 此范围内的变量的默认缓存设备 | ||
partitioner=None | 此范围内变量的默认分区程序 | ||
custom_getter=None | 这个范围内的变量的默认自定义getter | ||
reuse=None | |||
dtype=None | 在此作用域中创建的变量类型 | ||
use_resource=None | |||