TensorFlow学习(1):基础操作

    使用图(graphs)表示计算任务,图(graphs)中节点称为op(operation),一个op获得0个或者多个tensor执行计算,产生0个或者多个tensor计算结果,图(graphs)在会话(Session)中执行。使用tensor表示数据,tensor是一个n维数组或列表,使用变量(Variable维护状态),使用feed和fetch为任意操作赋值和从中读取数据。

1.创建图,启动图

import tensorflow as tf

#创建图,启动图
m1=tf.constant([[3,3]])       #创建一个常量op
m2=tf.constant([[2],[3]])
product=tf.matmul(m1,m2)      #创建一个矩阵乘法op,传入m1,m2
#print(product)   
#输出: Tensor("MatMul:0", shape=(1, 1), dtype=int32)  一个1*1的张量

#sess=tf.Session()            #定义一个会话,启动默认图
#result=sess.run(product)     #调用sess的run方法执行矩阵乘法op,run(product)触发图中3个op
#print(result)
#sess.close()                 #关闭会话

with tf.Session() as sess:    #【简洁方法】定义一个会话,启动默认图
    result=sess.run(product)  #调用sess的run方法执行矩阵乘法op,run(product)触发图中3个op
    print(result)             #做完自动sess.close()   #关闭会话

2.变量的使用

x=tf.Variable([1,2])     #定义变量,变量要先初始化才能run
a=tf.constant([3,3])     #定义常量
sub=tf.subtract(x,a)     #定义减法op
add=tf.add(x,sub)        #定义加法op
init=tf.global_variables_initializer() #初始化全局的变量,注意init的位置在所有变量最后面

with tf.Session() as sess:
    sess.run(init)       #变量初始化
    print(sess.run(sub))
    print(sess.run(add))

3.赋值操作

state=tf.Variable(0,name='counter')   # 创建一个变量初始化为0,起名字'counter'
new_value=tf.add(state,1) #创建一个变量,给state加1
update=tf.assign(state,new_value)  #赋值op,new_value赋值给state

init=tf.global_variables_initializer() #初始化全局的变量,注意init的位置在所有变量最后面

with tf.Session() as sess:
    sess.run(init)  #变量初始化
    print(sess.run(state))
    for _ in range(5):
        sess.run(update)
        print(sess.run(state))

4.Fetch  运行多个op

input1=tf.constant(3.0)
input2=tf.constant(2.0)
input3=tf.constant(5.0)

add=tf.add(input2,input3)
mul=tf.multiply(add,input1)

with tf.Session() as sess:
    result=sess.run([mul,add])  #运行多个op
    print(result)

5.Feed 以字典形式传入数据

input11=tf.placeholder(tf.float32) #创建占位符
input22=tf.placeholder(tf.float32) #创建占位符
output=tf.multiply(input11,input22)

with tf.Session() as sess:
    #feed的数据以字典形式传入(feed_dict)
    print(sess.run(output,feed_dict={input11:[7.0],input22:[2.0]}))  #给input11和input22赋值

6.案例:逼近线性模型

import tensorflow as tf
import numpy as np

#使用numpy生成100随机点样本
x_data=np.random.rand(100)
y_data=x_data*0.1+0.2

#构造一个线性模型,逼近y_data模型
b=tf.Variable(0.)
k=tf.Variable(0.)
y=k*x_data+b                                 #y预测值,优化k和b
 
#二次代价函数
loss=tf.reduce_mean(tf.square(y_data-y))     #求(y_data-y)*(y_data-y)的平均值

#定义一个梯度下降来进行训练优化
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.2)

#训练目标:最小化代价函数
train=optimizer.minimize(loss)                #loss越小,模型精度越高

#初始化变量
init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for step in range(201):
        sess.run(train)
        if step%20==0:                         #20次迭代打印一次step,k,b
            print(step,sess.run([k,b]))

运行结果:k逼近了0.1,b逼近了0.2

0 [0.051297005, 0.099384934]
20 [0.10157491, 0.19918564]
40 [0.10094823, 0.19950975]
60 [0.10057089, 0.19970484]
80 [0.10034371, 0.19982231]
100 [0.10020693, 0.19989301]
120 [0.10012457, 0.1999356]
140 [0.100075, 0.19996123]
160 [0.10004514, 0.19997665]
180 [0.10002718, 0.19998595]
200 [0.10001637, 0.19999154]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值