Tensorflow之张量和会话

2024-09-01 08:38
文章标签 张量 tensorflow

本文主要是介绍Tensorflow之张量和会话,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.张量的概念

     Tensorflow的名字表明了张量的含义。在tensorflow中,所有数据通过张量形式表示。张量可以理解为多维数组。零阶张量表示标量,也就是一个数;一阶张量为向量,一维数组;n阶张量可以理解为n维数组。
tensorflow中,张量并没有保存数字,只是表示数字的计算过程,是对tensorflow中运算结果的引用。
import tensorflow as tf
a = tf.constant([1, 2], name="a", dtype=tf.float32)
b = tf.constant([2.0, 3.0], name="b")
result = tf.add(a, b, name='add')
print(result)  # Tensor("add:0", shape=(2,), dtype=float32)
     上面代码中,并不会得到加法的结果,只能得到引用,保存在result中。

  引用的类型表示为: Tensor("add:0", shape=(2,), dtype=float32)
  张量结构保存了三个属性:名字(name)、维度(shape)、类型(type)

    张量的第一个属性除了是该张量的唯一标识符外,还表示了张量的计算方式。上面代码表明是通过加法计算得到。张量的名字通过"node:src_output"的形式给出,其中node为节点的名称,src_output表示当前张量来自该节点的第几个输出。如add:0说明该张量节点名称为add,第一个输出。
    张量的第二个属性shape表明了他的维度。shape=(2,)说明该张量是一个一维数组,长度为2.
    张量的第三个属性表明了该张量的数据类型。运行时,Tensorflow会对所有张量进行数据类型检查,发现类型不匹配时会报错。如下面这段代码会报错:
import tensorflow as tf
a = tf.constant([1, 2], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = tf.add(a, b, name='add')
print(result)  # Tensor("add:0", shape=(2,), dtype=float32)
去掉张量a后面的小数点后类型不一致,则报错,可以在a后显示添加数据类型:
import tensorflow as tf
a = tf.constant([1, 2], name="a", dtype=tf.float32)
b = tf.constant([2.0, 3.0], name="b")
result = tf.add(a, b, name='add')
print(result)  # Tensor("add:0", shape=(2,), dtype=float32)
2.张量的使用
张量的使用主要分为两大类:
第一类用途时对中间结果的引用,提高代码的可读性。如下代码:
# 使用张量记录中间结果
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = a + b# 直接计算向量的和,可读性差
result=tf.constant([1.0, 2.0], name="a")+tf.constant([2.0, 3.0], name="b")
第二类情况是计算图构造玩完成后,张量可以用来获取计算结果,得到真实的数字。虽然张量本身没有存储具体的数字,但是通过会话(Session)就可以得到这些具体的数字。如下代码:
# 使用张量记录中间结果
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = a + bwith tf.Session() as sess:tf.initialize_all_variables().run()
print(sess.run(result))
3.会话
Tensorflow使用会话(Session)来执行定义好的计算,其拥有并管理程序运行时的所有资源。当计算完成时,我们需要关闭会话来帮助系统回收资源,否则就可能资源泄漏。在Tensorflow中使用会话的方式有两种:
第一种需要自己生成会话和关闭会话,代码如下:
sess = tf.Session()  # 创建一个会话
print(sess.run(result))  # 使用会话获得结果
sess.close()  # 关闭会话,释放资源
使用这种方式需要最后调用sess.Close()函数关闭会话,否则可能存在内存泄漏的问题。
第二种是通过Python的上下文管理器来使用会话,代码如下:

with tf.Session() as sess:tf.initialize_all_variables().run()print(sess.run(result))
此种方式不需要调用Session.close()函数来关闭会话,当上下文退出时会自动关闭会话和释放资源。
此外,Tensorflow不会自动生成默认的会话,需要手动指定。当默认的会话被指定后可以通过eval()函数获取张量的值,代码如下:
sess = tf.Session()
with sess.as_default():print(result.eval())
使用tf.InteractiveSession()也可以自动生成默认的会话:
sess = tf.InteractiveSession()
print(result.eval())
sess.close()

这篇关于Tensorflow之张量和会话的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126455

相关文章

win10不用anaconda安装tensorflow-cpu并导入pycharm

记录一下防止忘了 一、前提:已经安装了python3.6.4,想用tensorflow的包 二、在pycharm中File-Settings-Project Interpreter点“+”号导入很慢,所以直接在cmd中使用 pip install -i https://mirrors.aliyun.com/pypi/simple tensorflow-cpu下载好,默认下载的tensorflow

稀疏自编码器tensorflow

自编码器是一种无监督机器学习算法,通过计算自编码的输出与原输入的误差,不断调节自编码器的参数,最终训练出模型。自编码器可以用于压缩输入信息,提取有用的输入特征。如,[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]四比特信息可以压缩成两位,[0,0],[1,0],[1,1],[0,1]。此时,自编码器的中间层的神经元个数为2。但是,有时中间隐藏层的神经元

Tensorflow实现与门感知机

感知机是最简单的神经网络,通过输入,进行加权处理,经过刺激函数,得到输出。通过输出计算误差,调整权重,最终,得到合适的加权函数。 今天,我通过tensorflow实现简单的感知机。 首先,初始化变量:     num_nodes = 2     output_units = 1     w = tf.Variable(tf.truncated_normal([num_nodes,output

Tensorflow lstm实现的小说撰写预测

最近,在研究深度学习方面的知识,结合Tensorflow,完成了基于lstm的小说预测程序demo。 lstm是改进的RNN,具有长期记忆功能,相对于RNN,增加了多个门来控制输入与输出。原理方面的知识网上很多,在此,我只是将我短暂学习的tensorflow写一个预测小说的demo,如果有错误,还望大家指出。 1、将小说进行分词,去除空格,建立词汇表与id的字典,生成初始输入模型的x与y d

Deepin Linux安装TensorFlow

Deepin Linux安装TensorFlow 1.首先检查是否有Python,一般deepin系统都自带python的。   2.安装pip Sudo appt-get install pip来安装pip,如果失败就先更新一下sudo apt-get updata,然后再sudo apt-get install pip,如果定位失败,就sudo apt-get install pyth

终止distributed tensorflow的ps进程

1.直接终止: $ ps -ef | grep python | grep 文件名 | awk {'print $2'} | xargs kill文件名为当前运行的程序,名称如:distribute.py 2.查找pid,后kill: $ ps -ef | grep python | grep 文件名 | awk {'print $2'}$ kill -9 <pid>

Python(TensorFlow和PyTorch)两种显微镜成像重建算法模型(显微镜学)

🎯要点 🎯受激发射损耗显微镜算法模型:🖊恢复嘈杂二维和三维图像 | 🖊模型架构:恢复上下文信息和超分辨率图像 | 🖊使用嘈杂和高信噪比的图像训练模型 | 🖊准备半合成训练集 | 🖊优化沙邦尼尔损失和边缘损失 | 🖊使用峰值信噪比、归一化均方误差和多尺度结构相似性指数量化结果 | 🎯训练荧光显微镜模型和对抗网络图形转换模型 🍪语言内容分比 🍇Python图像归一化

【DL--03】深度学习基本概念—张量

张量 TensorFlow中的中心数据单位是张量。张量由一组成形为任意数量的数组的原始值组成。张量的等级是其维数。以下是张量的一些例子: 3 # a rank 0 tensor; this is a scalar with shape [][1. ,2., 3.] # a rank 1 tensor; this is a vector with shape [3][[1., 2., 3.]

【tensorflow CNN】构建cnn网络,识别mnist手写数字识别

#coding:utf8"""构建cnn网络,识别mnistinput conv1 padding max_pool([2,2],strides=[2,2]) conv2 x[-1,28,28,1] 卷积 [5,5,1,32] -> [-1,24,24,32]->[-1,28,

【tensorflow 全连接神经网络】 minist 手写数字识别

主要内容: 使用tensorflow构建一个三层全连接传统神经网络,作为字符识别的多分类器。通过字符图片预测对应的数字,对mnist数据集进行预测。 # coding: utf-8from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as tfimport matplotlib.pyplot