TensorFlow学习笔记01 初识TensorFlow

  • 注意:本笔记的题目,例程均参考自人民邮电出版社的《深度学习基于python语言和TensorFlow平台》,仅供个人记录学习进展使用,侵删。
  • 运行结果太大,超出博文限制,故隐藏了结果显示。

初识TensorFlow

例一

  • 总分 = 德育分0.6 + 智育分0.3 + 体育分*0.1
  • 已知两位学生的3项成绩及总分,但是不知道计算规则,使用神经网络的方法大致推算3项权重是多少。
  • 将循环次数定为5000,训练10000次后,误差仅为0.023246765~0.033248901,已经很接近了。
#导入TensorFlow包,用简写tf代替tensorflow
import tensorflow as tf

#定义循环训练次数
time = 5000

#定义一个占位符变量x1,数据类型是32位浮点数
x1 = tf.placeholder(dtype = tf.float32)
x2 = tf.placeholder(dtype = tf.float32)
x3 = tf.placeholder(dtype = tf.float32)
#目标值
yTrain = tf.placeholder(dtype = tf.float32)

#定义一个神经元参数w1,初始值为0.1,数据类型为32位浮点数
w1 = tf.Variable(0.1, dtype = tf.float32)
w2 = tf.Variable(0.1, dtype = tf.float32)
w3 = tf.Variable(0.1, dtype = tf.float32)

n1 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3

y = n1 + n2 + n3

#计算 ”神经网络计算结果y“ 与 “目标值yTrain” 之间的误差
loss = tf.abs(y - yTrain)

#定义一个优化器变量optimizer,用以调整神经网络可变参数,0.001是学习率,决定了优化器调整参数的幅度大小
optimizer = tf.train.RMSPropOptimizer(0.001)

#定义一个训练对象train,train对象表示训练神经网络的方法
#要求优化器按照最小化原则调整可变参数
train = optimizer.minimize(loss)

#定义一个sess对象,包含一个TensorFlow会话对象
sess = tf.Session()

#tf.global_variables_initializer函数返回一个用来初始化可变参数的对象
#在sess会话中运行初始化这个函数
sess.run(tf.global_variables_initializer())

#执行神经网络的训练
for i in range(time):
    result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1 : 90, x2 : 80, x3 : 70, yTrain : 85})
    print(result)

    result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1 : 98, x2 : 95, x3 : 87, yTrain : 96})
    print(result)

练习一

  • 另一所学校有两名学生3项成绩和总分如下,试解出总分计算规则。
#导入TensorFlow包,用简写tf代替tensorflow
import tensorflow as tf

#定义循环训练次数
time = 5000

#定义一个占位符变量x1,数据类型是32位浮点数
x1 = tf.placeholder(dtype = tf.float32)
x2 = tf.placeholder(dtype = tf.float32)
x3 = tf.placeholder(dtype = tf.float32)
#目标值
yTrain = tf.placeholder(dtype = tf.float32)

#定义一个神经元参数w1,初始值为0.1,数据类型为32位浮点数
w1 = tf.Variable(0.1, dtype = tf.float32)
w2 = tf.Variable(0.1, dtype = tf.float32)
w3 = tf.Variable(0.1, dtype = tf.float32)

n1 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3

y = n1 + n2 + n3

#计算 ”神经网络计算结果y“ 与 “目标值yTrain” 之间的误差
loss = tf.abs(y - yTrain)

#定义一个优化器变量optimizer,用以调整神经网络可变参数,0.001是学习率,决定了优化器调整参数的幅度大小
optimizer = tf.train.RMSPropOptimizer(0.001)

#定义一个训练对象train,train对象表示训练神经网络的方法
#要求优化器按照最小化原则调整可变参数
train = optimizer.minimize(loss)

#定义一个sess对象,包含一个TensorFlow会话对象
sess = tf.Session()

#tf.global_variables_initializer函数返回一个用来初始化可变参数的对象
#在sess会话中运行初始化这个函数
sess.run(tf.global_variables_initializer())

#执行神经网络的训练
for i in range(time):
    result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1 : 92, x2 : 98, x3 : 90, yTrain : 94})
    print(result)

    result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1 : 92, x2 : 99, x3 : 98, yTrain : 96})
    print(result)
  • 通过观察最后两项结果,权重约为
    • w1: 0.38913646~0.39013645
    • w2: 0.37099329~0.37199807
    • w3: 0.23656371~0.23760301
  • 猜测权重为W1:0.4, W2:0.4, W3:0.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值