初学深度学习(一)TensorFlow基本开发步骤之准备数据and搭建模型(正向+反向)

本文以逻辑回归拟合二维数据为例进行演示tensorflow的基本开发步骤。

实例:从一组看似混乱的数据中找出y≈2x的规律

实例描述:

假设有一组数据集,其x和y的对应关系为y≈2x。

深度学习大概有如下四个步骤:

(1) 准备数据
(2) 搭建模型
(3) 迭代训练
(4) 使用模型

1、准备数据

这里使用y=2x这个公式来作为主体,通过加入一些干扰噪声让“=”变成“≈”

具体代码实现:

#导入所需要的包
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#生成模拟数据
train_X = np.linspace(-1, 1, 100) #在[-1,1]之间生成100个数作为x
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # 将x乘以2,再加上一个[-1,1]区间的随机数*0.3作为加入的噪声

#通过画散点图显示产生的模拟数据点
plt.plot(train_X, train_Y, 'ro', label='Original data') #画出散点图
plt.legend()#使上述代码产生效果:如图例的名称
plt.show()

在这里插入图片描述

2、搭建模型

模型分为两个方向:正向和反向。

(1)正向模型创建

使用下面的代码创建单个神经元的模型

# X,Y为占位符
X = tf.placeholder("float") # 代表x的输入
Y = tf.placeholder("float") # 代表对应的真实值y

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight") # w初始化为[-1,1]的随机数,形状为一维的数字
b = tf.Variable(tf.zeros([1]), name="bias") # b的初始化是0,形状为一维的数字

# 前向结构
z = tf.multiply(X, W)+ b # x*w+b

(2)反向模型创建

神经网络训练过程的数据流向有两个方向(正向和反向),正向生成预测值,与观测值对比差距,再反向调整其中的参数,接着再次正向生成预测值与观测值对比,一直如此循环下去,直到将参数调整为合适值。
反向传播往往需要引入一些算法来实现对参数的正确调整。

#反向优化
cost =tf.reduce_mean( tf.square(Y - z)) #cost是生成的预测值与真实值的平方差
learning_rate = 0.01 #设定学习率为0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #GradientDescentOptimizer()函数是一个封装好的梯度下降算法

PS:

  • 学习率的值一般小于1。这个值越大,表示调整的速度越大,但是不精确;值越小,表示调整的精度越高,但是速度慢。所以学习率的确定需要根据实际情况而定。
  • 梯度下降算法简单理解就是它会按照学习参数的速度来改变学习率。

猜你喜欢

转载自blog.csdn.net/qq_45154565/article/details/109635933