placehoder数据类型:
x = tf.placeholder(tf.float32, shape=[None, 784])
表示placehoder的大小,任意行数,仅要求列数为784
placehoder对数据的尺寸作自调整
Variable数据类型:
W = tf.Variable(tf.zeros([784,10]))
Variable必须手动初始化才可使用,其初始化函数为tf.global_variables_initializer(),然而这句函数要运行,还有用sess.run()封装:sess.run(tf.global_variables_initializer())
定义计算图:
写出计算方程,把数据的矩阵写进去:
y = tf.matmul(x,W) + b
定义loss
loss=tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)
定义优化目标:样本平均loss
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
设定训练方式:
对优化目标,选择优化方向:
minimize(cross_entropy)
选择train类里的优化算法(如梯度下降,步长由参数决定):
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
运行训练:
train_step.run()
此代码将运行一次.
分批多次计算的时候,应使用循环,并把数据分成批次(batch),分批次的方法已经内置:
batch = mnist.train.next_batch(100)
运行的时候,必须feed进batch的输入,如下:
for _ in range(1000):
batch = mnist.train.next_batch(100)
train_step.run(feed_dict={x: batch[0], y_: batch[1]})
评估模型:
argmax模块
argmax(y,1)会给出y中