机器学习 tensorflow 总结

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

下面是一个简单的机器学习 基于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)

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

例子很简单 到此结束! 





发布了56 篇原创文章 · 获赞 3 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/haoxuezhe1988/article/details/79224040