人工智能课程-深度学习应用开发TensorFlow实践

注:学习环境为anaconda+tensorflow+TensorBoard+Jupyter
Kali下打开Jupyter:终端里输入jupyter notebook命令即可,按Ctrl+Enter执行
Kali下启动TensorBoard:在终端输入tensorboard --logdir=/root/condalog,其中/root/condalog是我的日志存放路径,之后访问返回的url即可,默认为:http://localhost:6006,也可以用--port参数修改端口号

一、TensorFlow计算模型-计算图
1、计算图:是一个有向图,由节点和有向边构成。

  • 节点:代表操作,是一种运算
  • 有向边:代表节点之间的关系
    • 常规边(实线):代表数据依赖关系,即两个节点间的数据传递
    • 特殊边(虚线):代表控制依赖关系,即两个节点之间的控制相关性,eg:happen-before关系

eg:计算图实例
在这里插入图片描述
node3并不是一个数值,而是一个张量结构,以上只是创建了计算图,建立了静态计算模型

2、计算图的执行:
计算图创建后(即创建好节点后),需要执行对话才能提供数据并获得结果

eg:会话的创建、运行、关闭
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020040816235055.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH

二、张量(tensor):
在TensorFlow中,所有的数据都通过张量表示。张量可以理解为多维数组:
零阶张量 表示 标量(scalar),即一个数字;
一阶张量 表示 向量(vector),即一维数组;以此类推

张量没有真正的保存数字,而是保存计算过程。

1、张量的属性:
Tensor("node:src_output",shape=(),dtype=float32)

  • node是节点名称,src_output是来自节点的第几个输出;
  • shape是张量的维度信息,shape=()表示缺省状态,即为标量
  • dtype是数据类型,TensorFlow不允许出现数据类型不匹配的情况

在这里插入图片描述
node3的属性为:Tensor("Add:0",shape=(),dtype=float32)

在这里插入图片描述
2、张量的形状shape:
在这里插入图片描述
3、获取张量的元素:
在这里插入图片描述
在这里插入图片描述
4、张量的数据类型:
在这里插入图片描述
三、操作(operation)
计算图中的节点就是操作
eg:该例中共有4种操作,在TensorBoard中显示为a、b、c、d四个节点
在这里插入图片描述
从TensorBoard中查看结果图
在这里插入图片描述

第六讲:线性回归问题TensorFlow实战(y=2x+1)

使用TensorFlow进行算法设计与训练的核心步骤:
1、准备数据
2、构建模型
3、训练模型
4、进行预测

一、准备数据
1、人工数据集生成

#保证图像在Jupyter显示
%matplotlib inline

import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
#设置随机种子
np.random.seed(5)
#生成[-1,1]区间内的等差数列,个数为100个
x_data=np.linspace(-1,1,100)
#生成训练样本,在y=2x+1的基础上,添加幅度为0.4的抖动
y_data=2*x_data+1.0+np.random.randn(*x_data.shape)*0.4

2、利用matplotlib画出生成的数据集

#画出数据集的散点图
plt.scatter(x_data,y_data)
#画出要学习的线性函数
plt.plot(x_data,2*x_data+1.0,color='red',linewidth=3)

结果图如下:
在这里插入图片描述

二、构建模型

从这里开始使用TensorFlow

#定义占位符,可以理解为还未确定数值的变量
x=tf.placeholder("float",name="x")
y=tf.placeholder("float",name="y")
#定义模型函数,
def model(x,w,b):
    return tf.multiply(x,w)+b
#定义变量
w=tf.Variable(1.0,name="w0")
b=tf.Variable(0.0,name="b0")
#预测值,存储model函数的返回值
pred=model(x,w,b)

三、训练模型

#训练轮数:
train_epochs=10
#学习率:
learning_rate=0.05
#控制显示loss的粒度:
display_step=10 #每10个训练样本输出一个损失
#损失函数(以均方差衡量):
loss_function=tf.reduce_mean(tf.square(y-pred))
#梯度下降优化器:
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
#声明会话
sess=tf.Session()
#初始化变量
init=tf.global_variables_initializer()
sess.run(init)

#开始训练
step=0
loss_list=[]

for epoch in range(train_epochs):
    for xs,ys in zip(x_data,y_data):
        _,loss=sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys})
        loss_list.append(loss)
        step=step+1
        if step%display_step==0:
        	print("Train Epoch:",'%02d'%(epoch+1),"Step:%03d"%(step),"loss=",\"{:.0f}".format(loss))
    b0tmp=b.eval(session=sess)
    w0tmp=w.eval(session=sess)
    plt.plot(x_data,w0tmp*x_data+b0tmp)

训练结果图:
在这里插入图片描述
四、预测

x_test=3.21

predict=sess.run(pred,feed_dict={x:x_test})
print("predict value: %f"%predict)
target=2*x_test+1.0
print("object value: %f"%target)

结果:在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值