1. 实验目标
初步认识 𝑇𝑒𝑛𝑠𝑜𝑟𝐹𝑙𝑜𝑤库的用途
初步学习 𝑇𝑒𝑛𝑠𝑜𝑟𝐹𝑙𝑜𝑤数据的操作
2. 实验内容描述
2.1 本次实验主要使用的 𝑃𝑦𝑡ℎ𝑜𝑛库
| 名称 | 简介 |
| 𝑁𝑢𝑚𝑝𝑦 | 数组运算、矩阵运算、生成随机数
|𝑇𝑒𝑛𝑠𝑜𝑟𝐹𝑙𝑜𝑤 | 深度学习第三方库 |
2.2 理论学习
𝑇𝑒𝑛𝑠𝑜𝑟𝐹𝑙𝑜𝑤 的基本概念
2.3 实践实验
𝑇𝑒𝑛𝑠𝑜𝑟𝐹𝑙𝑜𝑤的安装
常量、变量、会话的创建以及它的属性
3. 适用的对象
3.1 先导课程
需要具备 𝑃𝑦𝑡ℎ𝑜𝑛基础
需要具备数据可视化基础
3.2 学习者
本科学生、研究生
人工智能、算法相关研究者、开发者
3.3 课程范畴
大数据、与人工智能
4. 实验流程图
理论学习部分
TensorFlow基本概念
使用图(graphs)来表示计算任务
在被称之为会话(Session)的上下文(Context)中执行图
使用 Tensor 表示数据
通过变量(Variable)维护状态
使用 feed 和 Fetch 可以为任意的操作赋值或者从中获取数据
TensorFlow 是一个编程系统,使用图 graphs 来表示计算任务,图 graphs 中的节点称之为 operation,一个 operation 获得 0 个或者多个 Tensor,执行计算,产生 0 个或者多个 Tensor。Tensor 看作是一个 n 维的数组或者列表。图必须在会话 Session 里被启动。
实践操作部分
**首先,安装本次实验需要的 𝑇𝑒𝑛𝑠𝑜𝑟𝐹𝑙𝑜𝑤 第三方库。**
!pip install numpy==1.16.0
!pip install tensorflow==1.13.1
步骤 1 引入TensorFlow
import tensorflow as tf
步骤 2 创建常量以及计算*
**步骤 2.1 创建常量创建计算**
# 创建两个常量
m1 = tf.constant([[3, 3]])
m2 = tf.constant([[2], [3]])
#创建一个矩阵乘法,并把m1,m2传入
product = tf.matmul(m1, m2)
print(product)
**步骤 2.2 创建 Session 会话,完成上述计算**
# 定义Session,启动会话
sess = tf.Session()
#调用run方法调用会话,查看计算结果
result = sess.run(product)
print(result)
sess.close()
**步骤 2.3 创建 Session 会话,展示计算结果**
with tf.Session() as sess:
result = sess.run(product)
print(result)
步骤 3 定义变量
**步骤 3.1 变量的定义以及计算**
#定义常量
x = tf.Variable([1, 2])
#定义常量
a = tf.constant([3, 3])
#定义减法操作
sub = tf.subtract(x, a)
#定义加法操作
add = tf.add(x, sub)
#全局初始化变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
# 打印计算结果
print(sess.run(sub))
print(sess.run(add))
**步骤 3.2 变量的自增操作**
# 创建一个变量初始化为0
state = tf.Variable(0, name='counter')
# 创建一个操作,作用是使 state 加 1
new_value = tf.add(state, 1)
# 赋值
update = tf.assign(state, new_value)
# 初始化全局变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(state))
for _ in range(4):
sess.run(update)
print(sess.run(state))
步骤 4 Fetch 和 feed
步骤 4.1 Fetch 操作
# Fetch 同时运行多个操作
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
# 定义计算操作
add = tf.add(input2, input3)
mul = tf.multiply(input1, add)
# 定义会话
with tf.Session() as sess:
result = sess.run([mul, add])
print(result)
**步骤 4.2 Feed 操作**
# Feed
# 创建占位符 placeholder
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.multiply(input1, input2)
with tf.Session() as sess:
# feed 的数据以字典的形式传入
print(sess.run(output, feed_dict={input1: [8.], input2: [2. ]}))
步骤 5 TensorFlow 简单示例
# 引入第三方库 TensorFlow 与 Numpy
import tensorflow as tf
import numpy as np
# 使用numpy生成100个随机点
x_data = np.random.rand(100)
y_data = x_data*0.1 + 0.2
# 创建一个线性模型
b = tf.Variable(0.)
k = tf.Variable(0.)
y = k*x_data + b
# 损失函数
loss = tf.reduce_mean(tf.square(y_data - y))
# 定义一个随机梯度下降法来进行训练器
optimizer = tf.train.GradientDescentOptimizer(0.2)
# 最小化loss
train = optimizer.minimize(loss)
# 初始化变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for step in range(201):
sess.run(train)
# 每 20step 打印一次结果
if step%20 == 0:
print('step: ', step, 'K & b: ', sess.run([k, b]), 'loss: ', sess.run(loss))
小结
本节实验首先讲述了,TensorFlow的常量、变量的定义、Session 对话方法的简单用法。
根据最后面的小例子,尝试修改不同的 K&b 值观察神经网络是否能够优化出相应的参数。