Tensorflow 初学者日记1 创建图启动图、变量常量、Fetch和Feed

一、基础内容

1、创建图、启动图

import tensorflow as tf
#创建一个常量op					
m1 = tf.constant([[3,3]])				//可以打出con之后按tab键会智能补全
#创建一个常量op
m2 = tf.constant([[2],[3]])
#创建一个矩阵乘法的op,把m1和m2传入
product = tf.matmul(m1,m2)
print(product)

运行:
Tensor("MatMul_1:0", shape=(1, 1), dtype=int32)			//因为没有在sess里面进行,只生成了tensor类型

修改一:
import tensorflow as tf			
m1 = tf.constant([[3,3]])				
m2 = tf.constant([[2],[3]])
product = tf.matmul(m1,m2)
#定义一个绘画启动默认图
sess = tf.Session()
#调用sess的run方法来执行矩阵乘法op
#run(product)触发了图中的三个op
result = sess.run(product)   #会一层一层往上去调用
print(result)
sess.close()

执行;
[[15]]

方法二;
用更简单的with来启动默认图
import tensorflow as tf			
m1 = tf.constant([[3,3]])				
m2 = tf.constant([[2],[3]])
product = tf.matmul(m1,m2)
with tf.Session() as sess:
    #调用sess的run方法来执行矩阵乘法op
    #run(product)触发了图中的三个op
    result = sess.run(product)   #会一层一层往上去调用
    print(result)

运行:
[[15]]

2、变量

TensorFlow 中最基本的单位是常量(Constant)、变量(Variable)和占位符(Placeholder)。
常量定义后值和维度不可变,变量定义后值可变而维度不可变。
在神经网络中,变量一般可作为储存权重和其他信息的矩阵,而常量可作为储存超参数或其他结构信息的变量。

import tensorflow as tf      				#载入tensorflow模块
x = tf.Variable([1,2])						#创建一个变量op
a = tf.constant([3,3])						#创建一个常量op
sub = tf.subtract(x,a)						#创建一个减法op,快速按两下shift+tab键可以查看函数使用方法
add = tf.add(x,a)						    #创建一个加法op
init = tf.global_variables_initializer()	#对变量初始化,即使有多个变量,这一个语句就可以完成全部的初始化
with tf.Session() as sess:					#创建一个图
    sess.run(init)							#先进行变量的初始化
    print(sess.run(sub))					#打印运行的减法结果
    print(sess.run(add))					#打印运行的加法结果

运行:
[-2 -1]
[4 5]

import tensorflow as tf
state = tf.Variable(0,name = 'counter')				#创建一个变量,初始化值为0
new_value = tf.add(state,1)							#创建一个op,作用是使state的值加1
update = tf.assign(state,new_value)					#通过将new_value的值赋给state来更新state的值
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(state))							#打印state的初始值
    for _ in range(5):
        sess.run(update)
        print(sess.run(state))

运行:
0
1
2
3
4
5

3、Fetch and feed

Fetch表示同时运行多个op

#Fetch
import tensorflow as tf
input1 = tf.constant(2.0)
input2 = tf.constant(3.0)
input3 = tf.constant(4.0)
add = tf.add(input1,input2)
mul = tf.multiply(input3,add)
with tf.Session() as sess:
    result = sess.run([mul,add])   			#Fetch表示可以同时run多个op
    print(result)

运行:
[20.0, 5.0]
#Feed

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

with tf.Session() as sess:
    print(sess.run(output,feed_dict = {input1:[8],input2 :[2]}))  #占位符利用字典将值传入

运行:
[16.]

二、以线性回归示例来初探tensorflow

1、思路

  • 载入模块 tensorflow、numpy
  • 获得初始数据、数据归一化处理
  • 构造线性模型
  • 对数据进行处理,包括考虑如何使预测值误差最小(确定代价函数、优化器,训练最小代价函数)
  • 创建一个图,使张量在图里面进行运行(tensorflow的由来),在先对初始变量进行初始化,再运行训练函数,得到结果,打印相关数据

2、实际操作一波

import tensorflow as tf
import numpy as np              #载入numpy模块

x_data = np.random.rand(100)   #随机生成100个数字
y_data = x_data*0.1 + 0.2
b = tf.Variable(0.)            #创建一个变量。初始化为0
k = tf.Variable(0.)
y = k*x_data + b				#构造一个线性模型

loss = tf.reduce_mean(tf.square(y-y_data))       			#二次代价函数
optimizer = tf.train.GradientDescentOptimizer(0.2)			#定义一个梯度下降算法来训练的优化器
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)
        if step%20 == 0:
            print(step,sess.run([k,b]))

运行:
0 [0.049652644, 0.098821595]
20 [0.10023947, 0.1998795]
40 [0.100142896, 0.19992818]
60 [0.10008524, 0.19995715]
80 [0.10005086, 0.19997443]
100 [0.10003034, 0.19998476]
120 [0.10001811, 0.1999909]
140 [0.100010805, 0.19999456]
160 [0.10000645, 0.19999675]
180 [0.10000386, 0.19999805]
200 [0.10000231, 0.19999884]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值