《机器学习实战》学习笔记———Tensorflow的运用


拟解决基本问题描述

经过学习tensorflow的知识,来进行对数据的一些简单处理和进行简单的机器学习算法

数据准备与数据预处理

数据准备
数据来源于自动生成的数据,通过添加噪点来模拟真实的数据。数据采用的是 这个函数,其中 的数据是采取随机生成的在区间 之间的300个随机数,然后生成了方差为0.5的300个随机数用来作为噪点,通过 来产生数据。

神经网络介绍

神经网络是一种数学模型,是存在于计算机的神经系统,由大量的神经元相连接并进行计算,在外界信息的基础上,改变内部的结构,常用来对输入和输出间复杂的关系进行建模。
神经网络由大量的节点和之间的联系构成,负责传递信息和加工信息,神经元也可以通过训练而被强化。
这个图就是一个神经网络系统,它由很多层构成。输入层就是负责接收信息,比如说一只猫的图片。输出层就是计算机对这个输入信息的认知,它是不是猫。隐藏层就是对输入信息的加工处理。

这里写图片描述

Tensorflow是谷歌开发的深度学习系统,用它可以很快速地入门神经网络。
它可以做分类,也可以做拟合问题,就是要把这个模式给模拟出来。
在运用tensorflow处理问题时,主要是
定义添加神经层的函数
1.训练的数据
2.定义节点准备接收数据
3.定义神经层:隐藏层和预测层

这里写图片描述
4.定义 loss 表达式

这里写图片描述

5.选择 optimizer 使 loss 达到最小

这里写图片描述

数据可视化

本次测试中训练数据采用的是 这个函数,可以先将图像画出来。

这里写图片描述

因为添加了噪点的关系,所以使得数据较为离散,比较接近真实的数据。在经过神经网络处理后,对每迭代500次的数据进行曲线图像化

这里写图片描述

测试结果

经过运行1000次后,通过动态图像可看到每500次迭代后的结果会相较于真是数据跟接近

这里写图片描述

到最后的

这里写图片描述

总结

通过学习莫烦的视频,对神经网络有了一定的认识,并学习了运用tensorflow这个工具来处理问题并进行可视化。接下来将会继续熟练运用tensorflow来构建神经网络来处理问题。

代码

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

def add_layer(inputs,in_size,out_size,activation_function=None):
    Weights = tf.Variable(tf.random_normal([in_size,out_size]))
    biases = tf.Variable(tf.zeros([1,out_size])+0.1)
    Wx_plus_b = tf.matmul(inputs,Weights)+biases
    if activation_function is None:
        outputs=Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    return outputs

x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise = np.random.normal(0,0.05,x_data.shape)
y_data = x_data*x_data*x_data - 0.5 + noise


xs = tf.placeholder(tf.float32,[None,1])
ys = tf.placeholder(tf.float32,[None,1])
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
prediction=add_layer(l1,10,1,activation_function=None)

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction)
                    ,reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data,y_data)
plt.ion()
plt.show()

for i in range(10000):
    #sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
    _,l,pred = sess.run([train_step,loss,prediction],{xs:x_data,ys:y_data})
    if i%500==0:
#        #print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
#       try:
#           ax.lines.remove(lines[0])
#       except Exception:
#           pass
#       prediction_value = sess.run(prediction,feed_dict={xs:x_data})
#       lines = ax.plot(x_data,prediction_value,"r-",lw=5)
#       plt.pause(0.1)
        plt.cla()
        plt.scatter(x_data,y_data)
        plt.plot(x_data,pred,'r-',lw=5)
        plt.text(0.5,0,"loss=%.4f"%l,fontdict={'size': 20,'color':'red'})
        plt.pause(0.1)
plt.ioff()
plt.show()

参考文献

【1】莫烦系列视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值