tensorflow基础1

一、Tensorflow程序当中的重要组成部分
1.一个构建图阶段:图的定义
张量(Tensor):Tensorflow中的基本数据对象
节点(OP):运算操作
2.一个执行图的阶段:会话去运行程序
二、图:
图包含了一组tf.Operation代表计算单元的对象和tf.Tensor代表计算单元之间流动的数据。
Graph默认注册,并可通过调用访问 tf.get_default_graph 获取默认的图的内存地址

可以通过tf.Graph()创建图,如果要在这张图中创建OP,使用tf.Graph.as_default 中使用

g=tf.Graph()
with g.as_default():
    c=tf.constant(11.0)
    print(c)

三、TensorBoard:可视化
为了更方便 TensorFlow 程序的理解、调试与优化,有了TensorBoard 的可视化工具。
通过TensorBoard 查看tensorflow程序 图的结构的步骤:
(1) 数据序列化-events文件
因为TensorBoard 通过读取 TensorFlow 的事件文件来运行,需要将数据生成一个序列化的 Summary protobuf 对象,所以我们需要先把整个程序序列化到一个文件当中(这个序列化文件的命名为events.out.tfevents.{timestamp}.{hostname})

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

con1=tf.constant(11.0)
con2=tf.constant(12.0)
sum_=tf.add(con1,con2)
with tf.Session() as sess:
    #在会话中序列化文件
   file_write=tf.summary.FileWriter("./tmp/summary/",graph=sess.graph)
    print(sess.run(sum_))
    print(con1.graph)

在这里插入图片描述
(2)启动启动TensorBoard
我们cd 到安装tensorboard 的虚拟环境下运行如下命令
tensorboard --logdir="/tmp/tensorflow/summary/test/"
在这里插入图片描述
注:cmd 中如果是机器名:6006在浏览器中输入可能报无法访问此页面,此时输入http://localhost:6006/ 就可以进入TensorBoard 界面

在浏览器中打开 TensorBoard 的图页面 http://localhost:6006/ ,会看到与以下图形类似的图,在GRAPHS模块我们可以看到以下图结构
在这里插入图片描述
三、会话:运行程序,需要close关闭会话,释放资源
1.会话包含以下两种开启方式
tf.Session:用于完整的程序当中
tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell(cmd 命令行中使用)
2.会话Session()中的参数
1)target。 如果将此参数留空(默认设置),会话将仅使用本地计算机中的设备。可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址,这使得会话可以访问该服务器控制的计算机上的所有设备。支持分布式
2)graph: 默认情况下,新的 tf.Session 将绑定到当前的默认图.并且只能当前的默认图中operation。
3)config: 此参数允许您指定一个 tf.ConfigProto 以便控制会话的行为。例如,ConfigProto协议用于打印设备使用信息

sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,
                                        log_device_placement=True))# 运行会话并打印设备信息

3.运行程序:
tf.operation.eval()也可以运行operation
run(fetches,feed_dict=None, options=None, run_metadata=None)
通过使用sess.run()来运行operation
fetches:运行对象不能是一些非op,tensor对象,比如int 、double(a=1,b=2,c=a+b run都不能运行a、b、c) 即其它不属于tensorflow的类型不行
feed_dict:运行时候提供数据,一般不确定数据形状时可以结合placeholder去使用,常用于在训练的时候实时提供要训练的批次数据

1)运行多个使用列表

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

con1=tf.constant(11.0)
con2=tf.constant(12.0)
sum_=tf.add(con1,con2)
with tf.Session() as sess:
   print(sess.run([con1,con2,sum_]))

在这里插入图片描述

2)当没有明确定义数据的内容时,使用tf.placeholder占位,当想指定数据内容的时候使用 feed_dict(是一个字典类型)

plt=tf.placeholder(tf.float32,shape=[None,2]) #其中定义数据的形状,行不固定,列固定2列,在placeholder中不固定用None,

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

plt=tf.placeholder(tf.float32,shape=[None,2])
with tf.Session() as sess:
   print(sess.run(plt,feed_dict={plt:[[1,2],[3,4],[23,33]]}))

请注意运行时候报的错误error:

RuntimeError:如果这Session是无效状态(例如已关闭)。
TypeError:如果fetches或者feed_dict键的类型不合适。
ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在的键。

四、张量
TensorFlow 的张量就是一个 n 维数组, 类型为tf.Tensor。Tensor具有以下两个重要的属性

type:数据类型
shape:形状(阶)
1.张量的阶
在这里插入图片描述
2.创建张量
在这里插入图片描述
在这里插入图片描述
3.张量的变换
(1)张量dtype的改变
在这里插入图片描述(2)改变张量的形状shape
1)tf.set_shape 静态修改形状:修改张量本身的形状,固定的形状不能修改,也不能跨阶修改
2)tf.reshape 动态修改形状:会创建新的张量,原来张量不会改变
五、变量OP
TensorFlow变量是表示程序处理的共享持久状态的最佳方法。变量通过 tf.Variable OP类以及tf.get_variable()类进行操作。变量的特点:存储持久化、可修改值、可指定被训练
(1)创建变量:变量需要显示初始化,才能运行值
tf.Variable(initial_value=None,trainable=True,collections=None,name=None)
initial_value:初始化的值
trainable:是否被训练
collections:新变量将添加到列出的图的集合中collections,默认为[GraphKeys.GLOBAL_VARIABLES],如果trainable是True变量也被添加到图形集合 GraphKeys.TRAINABLE_VARIABLES

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

var = tf.Variable(tf.random_normal([5, 6], mean=0.0, stddev=1.0), name='var_name')
init_varop=tf.global_variables_initializer()
with tf.Session() as sess:
   sess.run(init_varop)#需要先初始化变量才可以运行变量
   print(sess.run(var))

(2)变量的方法:assign和assign_add都会修改原来张量的值
1)new_var = assign(value):给变量赋值一个新的值,但是value必须与原来的变量的shape必须一致不然会报错

import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

var = tf.Variable(tf.random_normal([2, 3], mean=0.0, stddev=1.0), name='var_name')
new_var=var.assign([[1,2,3],[4,5,6]])
with tf.Session() as sess:
   sess.run(tf.global_variables_initializer())
   print(sess.run([var,new_var]))

输出结果
在这里插入图片描述
2) new_var = assign_add(delta):在原有的数据基础上加上delta,即矩阵的加法运算
(3)命名空间和变量的共享
共享变量的主要用途在一些网络当中的参数共享, 由于在TensorFlow当中,只要我们定义的OP,name参数指定一样,其实并不是同一个变量。如果想要达到重复利用变量的效果,我们就要使用tf.variable_scope()结合tf.get_variable()一起使用,
例如:我们创建如下同一个name的变量但是,tensorflow会自动加上_1,这样我们就不能共享变量
在这里插入图片描述
如果想让变量能够共享,我们需要如下步骤:
1)使用tf.variable_scope()修改OP命名空间,输出结果就会在变量name前面加上variable_scope命名的name在这里插入图片描述
共享变量需要在tf.variable_scope(“name”)中的reuse=tf.AUTO_REUSE参数

with tf.variable_scope("name", reuse=tf.AUTO_REUSE):

2)tf.get_variable共享变量

with tf.variable_scope("name", reuse=tf.AUTO_REUSE):
  var2 = tf.get_variable(initializer=tf.random_normal([2, 2], mean=0.0, stddev=1.0),
                         name="var2",
                         dtype=tf.float32)
  var2_double = tf.get_variable(initializer=tf.random_normal([2, 2], mean=0.0, stddev=1.0),
                         name="var2",
                         dtype=tf.float32)

输出结果如下:不再加_1在这里插入图片描述

Tensorflow是一个开源的机器学习框架,由Google开发。它被广泛应用于深度学习、神经网络和其他机器学习算法的开发和部署。 以下是Tensorflow基础训练的步骤: 1. 安装Tensorflow Tensorflow可以通过pip命令安装。在命令行中输入以下命令即可: pip install tensorflow 2. 创建Tensorflow图 在Tensorflow中,图是指一系列的操作。创建图的第一步是创建一个空白的图,然后向其中添加操作。在Tensorflow中,所有的操作都是节点,它们可以接受输入并产生输出。以下是创建一个简单的图的示例: import tensorflow as tf # 创建一个空白的图 graph = tf.Graph() # 向图中添加节点 with graph.as_default(): a = tf.constant(5) b = tf.constant(2) c = tf.add(a, b) 3. 运行Tensorflow图 在Tensorflow中,我们需要创建一个会话来运行图。会话是Tensorflow中用于执行图的对象。我们可以使用会话执行图中的操作,并获取它们的输出。以下是运行上面创建的图的示例: import tensorflow as tf # 创建一个图 graph = tf.Graph() # 向图中添加节点 with graph.as_default(): a = tf.constant(5) b = tf.constant(2) c = tf.add(a, b) # 创建一个会话 with tf.Session(graph=graph) as session: # 运行图中的操作 result = session.run(c) print(result) 输出结果为: 7 4. 使用Tensorflow变量 在Tensorflow中,变量是指可以在图中持久化存储的值。我们可以使用变量来存储模型的参数。以下是创建和使用Tensorflow变量的示例: import tensorflow as tf # 创建一个变量 x = tf.Variable(0, name='counter') # 创建一个操作 increment_op = tf.assign(x, x+1) # 创建一个会话 with tf.Session() as session: # 初始化变量 session.run(tf.global_variables_initializer()) # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) 输出结果为: 1 2 3 5. 保存和加载Tensorflow模型 在Tensorflow中,我们可以使用Saver对象将模型保存到磁盘上,并在需要时加载它们。以下是保存和加载Tensorflow模型的示例: import tensorflow as tf # 创建一个变量 x = tf.Variable(0, name='counter') # 创建一个操作 increment_op = tf.assign(x, x+1) # 创建一个Saver对象 saver = tf.train.Saver() # 创建一个会话 with tf.Session() as session: # 初始化变量 session.run(tf.global_variables_initializer()) # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) # 保存模型 saver.save(session, 'my-model') # 加载模型 with tf.Session() as session: # 加载模型 saver.restore(session, 'my-model') # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) 输出结果为: 1 2 3 4 5 6 以上就是Tensorflow基础训练的步骤。Tensorflow是一个非常强大的机器学习框架,它提供了丰富的工具和函数库,可以帮助我们开发和部署各种机器学习模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值