tf.placeholder
tf.placeholder(
dtype,
shape=None,
name=None
)
x=tf.placeholder(tf.float32,[28,28],'x')
注意placeholder中维度设置为None的时候是维度不定的意思,和-1的含义相同,但是placeholder中不能使用-1
tf.nn.softmax
tf.nn.softmax(
logits,
axis=None,
name=None,
dim=None
)
整个函数执行如下操作:
softmax = tf.exp(logits) / tf.reduce_sum(tf.exp(logits), axis)
参数说明:
logits: 一个非空tensor。必需是如下的数据类型:half, float32, float64
axis: 是softmax函数将在哪一个方向上进行,默认是-1,也就是在最后一个维度上进行(因为一般使用sotfmax函数分类都是对最后输出的类别信息求概率,所以最后的数据维度为[batch大小,类别数量],默认-1就是对类别维度做softmax)
returns:
返回一个tensor,这个tensor和logits有相同的形状和数据类型
tf.get_variable
tf.get_variable(
name,
shape=None,
dtype=None,
initializer=None,
regularizer=None,
trainable=None,
collections=None,
caching_device=None,
partitioner=None,
validate_shape=True,
use_resource=None,
custom_getter=None,
constraint=None,
synchronization=tf.VariableSynchronization.AUTO,
aggregation=tf.VariableAggregation.NONE
)
这个函数的作用是创建一个新的变量或者获取已经创建的变量的值。
函数执行时将name_scope的名字作为传入变量名字的前缀,执行一步查询,看指定的name scope中是否有该变量存在,否则创建一个新的变量。
参数解释:
name:已经存在或者将要创建的vairable名字
initializer:为创建的变量定义初始化过程。可以是一个initializer object或一个tensor。如果是tensor,tensor的形状必须已知(或者valiate_shape是False。当initializer是None的时候,默认的variable scope的initializer将会被使用,如果variable scope的initializer的variable scope也是None,那么将会使用glorot_uniform_initializer。当initializer是tensor的时候,variable将会被初始化为tensor的形状和大小
regularizer:
trainable:
collections:
caching_device:
partitioner:
validate_shape:当False的时候,允许variable被一个未知shape的tensor初始化。
use_resource:
custom_getter:
tf.nn.softmax_cross_entropy_with_logits
tf.nn.softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None,
axis=None
)
_sentinel:
labels: 传入的是一个概率分布,这个概率分布的shape一般是[batch_size, num_classes], num_class维度代表的就是概率分布,但是通常使用的都是one hot编码
logits: 是神经网络最后一层的输出,这个输出没有经过softmax计算,本函数会自动进行sotfmax的计算。
dim: class的维度,默认值-1代表最后一维
name
axis
return:
返回一个tensor,包含交叉熵,这里返回的是交叉熵是对class num维度求和过的,所以总的维度一般是[batch_size,1]
tf. train.GradientDescentOptimizer
注意这是一个类,而不是一个函数
init
__init__(
learning_rate,
use_locking=False,
name='GradientDescent'
)
use_locking:如果设置为True,不更新权重值
method:
minimize
minimize(
loss,
global_step=None,
var_list=None,
gate_gradients=GATE_OP,
aggregation_method=None,
colocate_gradients_with_ops=False,
name=None,
grad_loss=None
)
**loss:**一个tensor,是我们要最小化的变量,也就是LOSS
tf.arg_max
返回一个tensor中某个维度的最大值的index
tf.arg_max(
input,
dimension,
output_type=tf.dtypes.int64,
name=None
)
input: 一个tensor
dimension: 描述在哪一个维度上对输入tensor进行求最大下标的操作,在和one hot编码进行比较的时候,通常设置这个维度为1,这样是在类别的维度上求最大值,也就是求出NN判断的类别。
return: 一个tensor,类别由output type指定