您的位置:首页 > 其它

机器学习 tensorflow 总结

2018-02-01 10:12 148 查看
最近对机器学习产生了浓厚的兴趣,为了达到更好的学习效果,把每次自己敲过的代码的整理出来 做一个学习的总结,希望更多的对机器学习有兴趣的同学 可以一起交流 一起学习

下面是一个简单的机器学习 基于tensorf 线性回归的例子 很简单

# -*- coding: UTF-8 -*-
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
num_poits = 1000
vectors_set = []
for i in range(num_poits):
x1 = np.random.normal(0.0,0.55)
y1 = x1*0.1 +0.3+np.random.normal(0.0,0.03)
vectors_set.append([x1,y1])
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
# plt.scatter(x_data,y_data)
# plt.show()
W = tf.Variable(tf.random_uniform([1],-1.0,1.0),name='W')
b = tf.Variable(tf.zeros([1]),name='b')
y = W*x_data + b
loss = tf.reduce_mean(tf.square(y - y_data),name = 'loss')
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss , name='train')

# norm = tf.random_normal([2, 3],mean=-1,stddev=4)
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
for step in range(20):
sess.run(train)
print('W=',sess.run(W) ,'b=',sess.run(b),'loss=',sess.run(loss))简单的叙述一个代码
开始是初始化话 1000个(x,y)点 这个1000个点就是我们要使用的trainset 我们根据这些trainset来计算出最后收敛的函数

用高斯分布 初始化1000个x坐标 y坐标的函数是f(x) = 0.1x+0.3+高斯分布随机值

# plt.show()可以打印出分布的图形
然后随机初始化一个W 数组 和一个零向量b

代价函数我们用的是误差的平方和  代价函数一般要做最小化处理

训练模式选用的是梯度下降 学习速率定义为0.5 速率是自己定义的 越大收敛越快 但也会错过最优的值

最后是tf的标准格式 定义session 

run 初始化数据 

run训练集合

我们分20个步来进行训练 查看打印出来的W b

我们会发现最后所求的值是接近我们之前定义的 1000的散列的f(x)

说明我们的训练方法是对的

例子很简单 到此结束! 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: