这一部分,咱们将会建立一个线性回归模型,在此以前咱们先来看一看将会在代码中用到的TF基本函数:python
建立随机正态分布git
w是一个变量,大小为784*10,随机取值,标准差为0.01github
w=tf.Variable(tf.random_normal([784, 10], stddev=0.01))
平均值dom
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优化
线性回归练习spa
问题描述:在线性回归中咱们会使用一条直线来拟合数据点,使得偏差最小,下面的例子当中咱们将会建立一百个数据点。orm
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
X = tf.placeholder("float") Y = tf.placeholder("float")
线性回归模型为y_model(预测)=w*x,咱们须要计算w,损失函数定义为(Y-y_model(预测))^2,TensorFlow提供了许多优化器,能够在每次迭代以后计算和更新梯度,同时尽可能减小指定的损失函数。blog
咱们将使用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)
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/