1,深度学习介绍
深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。
2,认识tensorflow
什么是TensorFlow?
3,tensorflow基础
基础知识
4,tensorflow进阶
1)图
2)会话
运行图的结构,分配资源计算,掌握资源(变量资源,队列,线程)、
3)张量
1,张量的阶和数据类型
2,张量操作
张量操作
张量基本操作
4)变量
变量是一种op,是一种特殊的张量,能够进行存储持久化,它的值就是张量,默认被训练
5)模型保存与加载
6)自定义命令行参数
5,案例:实现线性回归
1),准备好特征值和目标值
2),建立模型,随机初始化一个权重和一个偏置值
3),求损失函数,误差,均方误差
4),梯度下降去优化损失过程,指定学习率
tensorboard作用域
# coding: gbk
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 保证sess.run()能够正常运行
tf.compat.v1.disable_eager_execution()
def myregression():
"""
自定义一个线性回归预测
:return:
"""
with tf.compat.v1.variable_scope("data"):
# 1,准备数据,x 特征值[100,1] y 目标值[100]
x = tf.compat.v1.random_normal([100,1],mean=1.75, stddev=0.5, name="x_data")
# 矩阵相乘必须是二维
y_true = tf.matmul(x,[[0.7]]) + 0.8
with tf.compat.v1.variable_scope("model"):
# 2,建立线性回归模型,1个特征,一个权值,一个偏置 y = xw +b
# 随机给定一个权值和偏置,让他计算损失,然后在当前状态下优化
# 用变量定义才能优化
weight = tf.Variable(tf.compat.v1.random_normal([1,1], mean=0.0, stddev=1.0), name="w")
bias = tf.Variable(0.0, name="b")
y_predict = tf.matmul(x, weight) + bias
with tf.compat.v1.variable_scope("loss"):
# 3,建立损失函数,均方误差
loss = tf.reduce_mean(tf.square(y_true - y_predict))
with tf.compat.v1.variable_scope("optimizer"):
# 4,梯度下降优化损失 leaning_rate:0~1,2,3,5,7,10
train_op = tf.compat.v1.train.GradientDescentOptimizer(0.1).minimize(loss)
# 1、收集tensor
tf.compat.v1.summary.scalar('losses', loss)
tf.compat.v1.summary.histogram('weights', weight)
# 定义合并tensor的op
merged = tf.compat.v1.summary.merge_all()
# 定义一个初始化变量的op
init_op = tf.compat.v1.global_variables_initializer()
# 定义一个保存模型的实例
saver = tf.compat.v1.train.Saver()
# 通过会话运行程序
with tf.compat.v1.Session() as sess:
sess.run(init_op)
# 打印随机最先初始化的权重和偏置
print("随机初始化的参数权重为:%f,偏置为:%f" % (weight.eval(), bias.eval()))
filewriter = tf.compat.v1.summary.FileWriter("B:\\PycharmProjects\\PythonProject\\机器学习\\深度学习\\logdir\\log1", graph=sess.graph)
# 加载模型,覆盖模型当中随机定义的参数,从上次训练的参数开始
if os.path.exists("B:\\PycharmProjects\\PythonProject\\机器学习\\深度学习\\model\\checkpoint"):
saver.restore(sess, "B:\\PycharmProjects\\PythonProject\\机器学习\\深度学习\\model\\model1")
# 循环运行优化
for i in range(500):
sess.run(train_op)
summary = sess.run(merged)
filewriter.add_summary(summary, i)
print("第%d次优化的参数权重为:%f,偏置为:%f" % (i, weight.eval(), bias.eval()))
saver.save(sess, "B:\\PycharmProjects\\PythonProject\\机器学习\\深度学习\\model\\model1")
return None
if __name__=="__main__":
myregression()