1、一个Tensorflow图由以下几个部分组成:
-
占位符变量(Placeholder)用来改变图的输入。
-
模型变量(Model)将会被优化,使模型表现的更好。
-
模型本质上就是一些数学函数,它根据Placeholder和模型的输入变量计算一些输出。
-
一个cost度量来指导变量的优化。
-
一个优化策略会更新模型的变量。
2、Placeholder
-
#(类型,形状),None代表tensor可能保存任意数量的图像,每张图像是一个长度为img_size_flat的向量。
x = tf.placeholder(tf.float32, [None, img_size_flat])
-
#真实标签
y_true = tf.placeholder(tf.float32, [None, num_classes])
-
#真实类别定义,None代表是任意长的一维向量
y_true_cls = tf.placeholder(tf.int64, [None])
-
#需要优化的变量,权重是二维张量
weights = tf.Variable(tf.zeros([img_size_flat, num_classes]))
-
#偏差
bias = tf.Variable(tf.zeros([num_classes]))
3、模型
-
#logits是一个num_images行num_classes列的矩阵
logits = tf.matmul(x, weights) + biases
-
#归一化,使得矩阵的每一行相加为1
y_pred = tf.nn.softmax(logits)
y_pred_cls = tf.argmax(y_pred, dimension=1)
4、优化损失函数
-
交叉熵是一个长为正直的连续函数,如果模型的预测值精准符合期望,它就=0
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y_true)
-
cost = tf.reduce_mean(cross_entropy)
5、优化器
-
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.5).minimize(cost)
6、性能度量
-
correct_prediction = tf.equal(y_pred_cls, y_true_cls)
-
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
7、运行tensorflow会话
-
#创建session来运行图
session = tf.Session()
-
#初始化
session.run(tf.global_variables_initializer())