# Author Qian Chenglong
import tensorflow as tf
import numpy as np #生成100个随机数据点
x_date=np.random.rand(100)
y_date=x_date*0.1+0.2 #构造一个线性模型
k=tf.Variable(0.)
b=tf.Variable(0.)
y=k*x_date+b # 二次代价函数
loss=tf.reduce_mean(tf.square(y-y_date))#最小二乘 my_optimizer=tf.train.GradientDescentOptimizer(0.2)#定义一个使用梯度下降算法的训练器
train=my_optimizer.minimize(loss)#训练目标loss最小 init=tf.global_variables_initializer()#初始化变量 with tf.Session() as sess:
sess.run(init)
for step in range(201):
sess.run(train)
if step%20==0:
print(step, '[k,b]:', sess.run([k, b]))

 API说明:

np.random.rand(100)生成100个0~1之间的随机数

tf.square():计算元素的平方

tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)

计算张量的各个维度上的元素的平均值。

axis是tf.reduce_mean函数中的参数,按照函数中axis给定的维度减少input_tensor。除非keep_dims是true,否则张量的秩将在axis的每个条目中减少1。如果keep_dims为true,则缩小的维度将保留为1。 如果axis没有条目,则减少所有维度,并返回具有单个元素的张量。

参数:

  • input_tensor:要减少的张量。应该有数字类型。
  • axis:要减小的尺寸。如果为None(默认),则减少所有维度。必须在[-rank(input_tensor), rank(input_tensor))范围内。
  • keep_dims:如果为true,则保留长度为1的缩小尺寸。
  • name:操作的名称(可选)。
  • reduction_indices:axis的不支持使用的名称。
tf.Variable(initializer, name):initializer是初始化参数,可以有tf.random_normal,tf.constant,tf.constant等,name就是变量的名字,用法如下:
a1 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a1')
a2 = tf.Variable(tf.constant(1), name='a2')
a3 = tf.Variable(tf.ones(shape=[2,3]), name='a3')

运行session.run()可以:

  1. 获得你要得到的运算结果;
  2. 你所要运算的部分;
 
#qiancl 666
import tensorflow as tf
import numpy as np
#学习率
learning_rate=0.01
#最大训练步数
max_train_step=1000
#np.array()矩阵
train_X_date=np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],[9.779],[6.182],[7.59],[2.167],
[7.042],[10.791],[5.313],[7.997],[5.654],[9.27],[3.1]],dtype=np.float32)
train_Y_date=np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],[3.366],[2.596],[2.53],[1.221],
[2.827],[3.465],[1.65],[2.904],[2.42],[2.94],[1.3]],dtype=np.float32)
#样本个数
tolal_samples=train_X_date.shape[0]
#输入数据占位
x=tf.placeholder(tf.float32,[None,1])
y_=tf.placeholder(tf.float32,[None,1])
#tf.random_normal([1,1])生成【1,1】的符合正态分布的随机数
w=tf.Variable(tf.random_normal([1,1]),name="weight")
b=tf.Variable(tf.zeros([1]),name="bias")
y=tf.matmul(x,w)+b
loss=tf.reduce_sum(tf.pow(y-y_,2))/tolal_samples #创建优化器
optimizer=tf.train.GradientDescentOptimizer(learning_rate) #训练目标
train_op=optimizer.minimize(loss) #训练
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print("开始训练")
for step in range(max_train_step):
sess.run(train_op, feed_dict={x: train_X_date, y_: train_Y_date})
if step % 100 == 0:
c = sess.run(loss, feed_dict={x: train_Y_date, y_: train_Y_date})
print("Step:%d, loss==%0.4f, w==%0.4f, b==%0.4f" % (step, c, sess.run(w), sess.run(b)))

最新文章

  1. Class.forName("com.mysql.jdbc.Driver") ;
  2. 运维请注意:”非常危险“的Linux命令大全
  3. Spring里PropertyPlaceholderConfigurer类的使用
  4. Android开发中内存和UI优化
  5. 20145208 《Java程序设计》第6周学习总结
  6. java日期加减
  7. 移动端 js touch事件
  8. google font和@font-face
  9. Codeforces 543B Destroying Roads(最短路)
  10. Wireless Password - HDU 2825(ac自动机+状态压缩)
  11. 教程:30分钟学会Adobe Premiere
  12. iOS6 旋转
  13. 深入浅出—JAVA(9)
  14. opentsdb
  15. 关于java.lang.reflect.InvocationTargetException(jar 包缺少或者冲突)的错误
  16. PHP知识大全
  17. java学习笔记之StringBuilder
  18. dubbo,eclipse,服务报错
  19. 浏览器本地下拉框查询选择js
  20. jieba库分词词频统计

热门文章

  1. Spring Security(一)
  2. A simple problem(hdu2522)
  3. 继续畅通工程(hdu1879)并查集
  4. 本地服务器搭建服务:mysql
  5. 活字格Web应用平台学习笔记4 - 添加记录
  6. bootstrap和ajax相结合
  7. [Android] 压缩图片并保存
  8. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation
  9. 【转】C++11的enum class & enum struct和enum
  10. 用 Windows Live Writer 写blog,This is Test……..