tensorflow 2.0 已经发布了!
Tensorflow是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为op (operation 的缩写). 一个op获得0个或多个Tensor , 执行计算, 产生0个或多个Tensor . 每个Tensor是一个类型化的多维数组.
一个 Tensorflow图描述了计算的过程. 为了进行计算, 图必须在会话里被启动. 会话将图的op分发到诸如CPU或GPU之类的设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的tensor返回. 在Python语言中, 返回的tensor是numpy.ndarray对象; 在C和C++语言中, 返回的tensor是tensorflow::Tensor实例.
Tensorflow程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op的执行步骤被描述成一个图. 在执行阶段, 使用会话执行执行图中的op. 例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练op. Tensorflow支持C, C++, Python。三种语言的会话库(session libraries)是一致的。
今天分享一下tensorflow的hello world!
# coding=utf-8
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)
x = tf.placeholder('float', [None, 784])
W = tf.Variable(tf.zeros([784, 10])) # weight
b = tf.Variable(tf.zeros([10])) # intercept
y = tf.nn.softmax(tf.matmul(x, W) + b) # 预测输出
y_ = tf.placeholder('float', [None, 10]) # 真实输出的占位符,占位符用输入数据填充
cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) # 损失函数(也就是目标函数),计算交叉熵
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) # 使用梯度下降法优化目标函数
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100) # 从训练集里随机抽取100个样本以及对应的标签,用于填充占位符
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # 执行迭代优化
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) # 诡异的操作
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
sess.close()