Part-2: Tensorflow教程的简单例子:
这一部分,我们将会创建一个线性回归模型,在此之前我们先来看一看将会在代码中用到的TF基本函数:
创建随机正态分布
w是一个变量,大小为784*10,随机取值,标准差为0.01
w=tf.Variable(tf.random_normal([784, 10], stddev=0.01))
平均值
b = tf.Variable([10,20,30,40,50,60],name='t')
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
sess.run(tf.reduce_mean(b))
输出35
a=[ [0.1, 0.2, 0.3 ],
[20, 2, 3 ]
]
b = tf.Variable(a,name='b')
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
sess.run(tf.argmax(b,1))
输出a
线性回归练习
问题描述:在线性回归中我们会使用一条直线来拟合数据点,使得误差最小,下面的例子当中我们将会创建一百个数据点。
a) 创建训练数据:
trainX在-1和+1之间,trainY是trainX的三倍外加一些随机值
import tensorflow as tf
import numpy as np
trainX = np.linspace(-1, 1, 101)
trainY = 3 * trainX + np.random.randn(*trainX.shape) * 0.33
b) 占位符:
X = tf.placeholder("float")
Y = tf.placeholder("float")
c) 建模:
线性回归模型为y_model(预测)=w*x,我们需要计算w,损失函数定义为(Y-y_model(预测))^2,TensorFlow提供了许多优化器,可以在每次迭代之后计算和更新梯度,同时尽量减少指定的损失函数。
我们将使用GradientDescentOptimizer最小化损失函数使用0.01的学习率。
w = tf.Variable(0.0, name="weights")
y_model = tf.multiply(X, w)
cost = (tf.pow(Y-y_model, 2))
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
d) 训练:
init = tf.initialize_all_variables()
#init= tf.global_variables_initializer() for new tf
with tf.Session() as sess:
sess.run(init)
for i in range(100):
for (x, y) in zip(trainX, trainY):
sess.run(train_op, feed_dict={X: x, Y: y})
print(sess.run(w))
最后的结果应该在3左右。
完整的代码在这里:https://github.com/sankit1/cv-tricks.com
reference:https://cv-tricks.com/artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow/tensorflow-tutorial/