TensorFlow 学习笔记

@(深度学习)

纯粹的学习笔记,写给自己看的,防止遗忘。

定义公式

定义的公式只是 Computation Graph,在这执行这代码时计算还没发生,需要调用 run 方法并 feed 数据才真正执行。

流程

  1. 定义算法公式,也就是神经网络 forward 时的计算。
  2. 定义 loss ,选定优化器,并指定优化器优化 loss。
  3. 迭代地对数据进行训练。
  4. 在测试集或验证集上对准确率进行评测。

lambda

dense

tf.nn.relu

tf.nn.tanh

tf.nn.moment

tf.nn.softmax_cross_entropy_with_logits()

tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, labels))
=>
tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = logits, labels = labels))

tf.stack()

tf.pack() => tf.stack()
tf.unpack() => tf.unstack()

tf.nn.dropout()

tf.truncated_normal()

tf.reshape()

重新变换形状

tf.reduce_mean()

在某一维度上求平均值

1
2
3
4
5
6
7
8
reduce_mean(
input_tensor,
axis=None,
keepdims=None,
name=None,
reduction_indices=None,
keep_dims=None
)

Others

1
a = tf.Variable()

tf.name_scope()

对 tf.get_variable() 无效

scope.reuse_variables()

后面加 tf.get_variable() 可以重复用

tf.equal()

判断两个是否相等

tf.cast()

映射,参数一映射为参数二的类型

tf.placeholder()

占位符
input = tf.placeholder(tf.float32)
操作 = 函数(input)
sess.run(操作, feed_dict = {input: 2})

tf.placeholder(tf.float32, [None, 784])
第二个参数代表 tensor 的 shape, 也就是数据的尺寸。
None 代表不限条数的输入,784 代表每条输入是一个784 维的向量。

tf.argmax

返回最大值的索引

tf.train

tf.train.Saver()

保存(save) 恢复(restore) 模型

1
2
3
4
# save
saver.save(sess, 'my-model', global_step = 0)
# restore
saver.restore(sess, 'my-model')

tf.nn.rnn_cell

tf.nn.rnn_cell => tf.contrib.rnn

tf.train.GradientDescentOptimizer()

梯度下降优化器

tf.summary.FileWriter

tf.trian.SummaryWriter => tf.summary.FileWriter
Writes Summary protocol buffers to event files.

tf.global_variables_initializer()

tf.initialize_all_variables() => tf.global_variables_initializer()

tf.matmul()

两个矩阵相乘

1
2
3
4
5
6
7
8
9
10
11
matmul(
a,
b,
transpose_a=False,
transpose_b=False,
adjoint_a=False,
adjoint_b=False,
a_is_sparse=False,
b_is_sparse=False,
name=None
)

tf.square()

平方

1
2
3
4
square(
x,
name=None
)