Tensorflow不仅仅是一个深度学习框架。它是一种通用计算框架,用于以并行和分布式方式执行通用数学运算。下面描述这样的示例。
常用的并且易于计算的基本统计示例是将一条线拟合到数据集。在tensorflow中执行此操作的方法在下面的代码和注释中进行了描述。
(TensorFlow)脚本的主要步骤是:
声明占位符(x_ph,y_ph)和变量(W,b)
定义初始化运算符(init)
在占位符和变量声明操作(y_pred,loss,train_op)
建立工作阶段(sess)
运行初始化运算符()sess.run(init)
运行一些图形操作(例如sess.run([train_op, loss], feed_dict={x_ph: x, y_ph: y}))
图形构建使用Python TensorFlow API完成(也可以使用C ++ TensorFlow API完成)。运行该图将调用低级C ++例程。
''' function: create a linear model which try to fit the line y = x + 2 using SGD optimizer to minimize root-mean-square(RMS) loss function ''' import tensorflow as tf import numpy as np # number of epoch num_epoch = 100 # training data x and label y x = np.array([0., 1., 2., 3.], dtype=np.float32) y = np.array([2., 3., 4., 5.], dtype=np.float32) # convert x and y to 4x1 matrix x = np.reshape(x, [4, 1]) y = np.reshape(y, [4, 1]) # test set(using a little trick) x_test = x + 0.5 y_test = y + 0.5 # This part of the script builds the TensorFlow graph using the Python API # First declare placeholders for input x and label y # Placeholders are TensorFlow variables requiring to be explicitly fed by some # input data x_ph = tf.placeholder(tf.float32, shape=[None, 1]) y_ph = tf.placeholder(tf.float32, shape=[None, 1]) # Variables (if not specified) will be learnt as the GradientDescentOptimizer # is run # Declare weight variable initialized using a truncated_normal law W = tf.Variable(tf.truncated_normal([1, 1], stddev=0.1)) # Declare bias variable initialized to a constant 0.1 b = tf.Variable(tf.constant(0.1, shape=[1])) # Initialize variables just declared init = tf.initialize_all_variables() # In this part of the script, we build operators storing operations # on the previous variables and placeholders. # model: y = w * x + b y_pred = x_ph * W + b # loss function loss = tf.mul(tf.reduce_mean(tf.square(tf.sub(y_pred, y_ph))), 1. / 2) # create training graph train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss) # This part of the script runs the TensorFlow graph (variables and operations # operators) just built. with tf.Session() as sess: # initialize all the variables by running the initializer operator sess.run(init) for epoch in xrange(num_epoch): # Run sequentially the train_op and loss operators with # x_ph and y_ph placeholders fed by variables x and y _, loss_val = sess.run([train_op, loss], feed_dict={x_ph: x, y_ph: y}) print('epoch %d: loss is %.4f' % (epoch, loss_val)) # see what model do in the test set # by evaluating the y_pred operator using the x_test data test_val = sess.run(y_pred, feed_dict={x_ph: x_test}) print('ground truth y is: %s' % y_test.flatten()) print('predict y is : %s' % test_val.flatten())