学习笔记 | 深度学习开发—TensorFlow实践(基础概念)

简介: 学习笔记 | 深度学习开发—TensorFlow实践(基础概念)
  1. TensorFlow计算模型—计算图

1,概念

①TensorFlow=Tensor + Flow

Tensor 张量

Tensorflow中,所有的数据都通过张量的形式来表示

张量没有真正保存数字,二十保存的是计算过程

数据结构:多维数组

Flow 流

计算模型:张量之间通过计算而转换的过程

基础代码:

import  tensorflow as tf#导入tensorflow模型
hello=tf.constant("hello world")#定义常量并赋值
sess=tf.Session()#开启会话
print(sess.run(hello))#运行会话并打印

输出结果:b'hello world'

#一个简单计算图

import  tensorflow as tf
node1=tf.constant(3.0,tf.float32,name="node1")
node2=tf.constant(4.0,tf.float32,name="node2")
node3=tf.add(node1,node2)
sess=tf.Session()
print(sess.run(node3))

输出结果:7.0

 

②张量的属性

Tensor("node1:0", shape=(), dtype=float32)

Name:节点名称

shape:张量的维度信息,shape=()表示标量

Type:每个张量都有唯一类型

③张量的形状

阶(rank)、形状(shape)、维数(dimension number)image.png

import  tensorflow as tf
tens1=tf.constant([[[1,2,2],[2,2,3]],
                    [[3,5,6],[5,4,3]],
                    [[7,0,1],[5,4,3]],
                    [[11,12,7],[1,3,14]]],name="tensor1")
#语句包含[],{},()括号中间换行就不需要使用多行连接符
print(tens1)

输出结果:Tensor("tensor1:0", shape=(4, 2, 3), dtype=int32)


shape=(4, 2, 3):三个元素表示三维数组,最外围数字有4个元素,也就是4个2为数组,往里一层一个2维数组有2个元素,也就是有2个一维数组,再往里一层一个一维数组有3个元素,也就是3个元素

import  tensorflow as tf
scalar=tf.constant(100)
vector=tf.constant([1,2,3,4,5])
matrix=tf.constant([[1,2,3],[4,5,6]])
cube_martix=tf.constant([[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]])
#语句包含[],{},()括号中间换行就不需要使用多行连接符
print(scalar.get_shape())
print(vector.get_shape())
print(matrix.get_shape())
print(cube_martix.get_shape())

输出结果:

()

(5,)

(2, 3)

(3, 3, 1)

④张量的阶

表征张量的维度image.png⑤获取张量的元素

阶为1的张量等价于向量

阶为2的张量等价于矩阵,通过t[i,j]获取元素

阶为3的张量,通过t[i,j,k]获取元素

import  tensorflow as tf
tens1=tf.constant([[[1,2],[2,3]],[[3,4],[5,6]]])
sess=tf.Session()
print(sess.run(tens1)[1,1,0])
sess.close()

#下标从0开始


输出结果:5


⑥张量的类型


Tensorflow支持14种不同类型


实数 tf.float32 , tf.float64


整数 tf.int8 ,tf.int16,tf.int64,tf.uint8


布尔 tf.bool


负数 tf.complex64,tf.complex128


默认类型:不带小数点的数会默认为int32


带小数点的会被默认为float32

import  tensorflow as tf
a=tf.constant([1,2],name="a")
b=tf.constant([2.0,3.0],name="b")
renult=a+b

输出结果:TypeError: Input 'y' of 'Add' Op has type float32 that does not match type int32 of argument 'x'.


Tensorflow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错.


2,操作


计算图中的节点就是操作;加法,乘法,构建变量都是操作


每个运算操作都有属性,再构建图的时候需要确定下来。


操作之间存在顺序关系,操作之间的依赖就是“边”,如果操作a的输出是操作b执行的结果,那么这个操作a就依赖与操作b

import  tensorflow as tf#导入tensorflow模型
tf.reset_default_graph()#清楚默认图和不断增加的节点
#定义变量a
a=tf.Variable(1,name="a")
#定义操作b
b=tf.add(a,1,name="b")
#定义操作c为b*4
c=tf.multiply(b,4,name="c")
#定义d为c-d
d=tf.subtract(c,b,name="d")
#存放文件路径
logdir='D:/pycharm project/logs'
#生成一个写日志的writer,并将当前的tensorflow计算图写入日志
writer=tf.summary.FileWriter(logdir,tf.get_default_graph())
writer.close()

计算图:

image.png3,TensorFlow是一个通过计算图的形式表述计算的编程系统,每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的关系。


抽象出来就是点和边的关系


计算图是一个有向图,由以下内容构成:


一组节点,每个节点都代表一个操作,是一种运算


一组有向边,每条边代表节点之间的关系(数据传递和控制依赖)


TensorFlow有两种边:


常规边(实现):代表数据依赖关系。一个节点的运算输出成为另一个节点的输入,两个节点之间有tensor流动(值传递)


特殊边(虚线):不携带值,便是两个节点之间的控制相关性。image.png

import  tensorflow as tf
node1=tf.constant(3.0,tf.float32,name="node1")
node2=tf.constant(4.0,tf.float32,name="node2")
node3=tf.add(node1,node2)
sess=tf.Session()
print(node1)

输出结果:Tensor("node1:0", shape=(), dtype=float32)

输出的结果不是一个数字而是一个张量的结构

创建流图(计算图),就是建立计算模型,执行会话才能提供数据并获得结果
image.pngimage.pngimage.pngimage.png

相关文章
|
13天前
|
机器学习/深度学习 API 语音技术
|
7天前
|
机器学习/深度学习 运维 监控
TensorFlow分布式训练:加速深度学习模型训练
【4月更文挑战第17天】TensorFlow分布式训练加速深度学习模型训练,通过数据并行和模型并行利用多机器资源,减少训练时间。优化策略包括配置计算资源、优化数据划分和减少通信开销。实际应用需关注调试监控、系统稳定性和容错性,以应对分布式训练挑战。
|
9天前
|
机器学习/深度学习 PyTorch TensorFlow
【TensorFlow】TF介绍及代码实践
【4月更文挑战第1天】TF简介及代码示例学习
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
Python中的深度学习:TensorFlow与PyTorch的选择与使用
Python中的深度学习:TensorFlow与PyTorch的选择与使用
|
2月前
|
机器学习/深度学习 数据可视化 TensorFlow
基于tensorflow深度学习的猫狗分类识别
基于tensorflow深度学习的猫狗分类识别
63 1
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
【TensorFlow】深度学习框架概述&TensorFlow环境配置
【1月更文挑战第26天】【TensorFlow】深度学习框架概述&TensorFlow环境配置
|
1天前
|
机器学习/深度学习 边缘计算 监控
深度学习赋能智能监控:图像识别技术的革新与应用
【4月更文挑战第23天】 随着人工智能的迅猛发展,深度学习技术在图像处理领域取得突破性进展,特别是在智能监控系统中,基于深度学习的图像识别已成为提升系统智能化水平的核心动力。本文旨在探讨深度学习如何优化智能监控系统中的图像识别过程,提高监控效率和准确性,并分析其在不同应用场景下的具体实施策略。通过深入剖析关键技术、挑战及解决方案,本文为读者提供了一个关于深度学习图像识别技术在智能监控领域应用的全面视角。
|
1天前
|
机器学习/深度学习 存储 边缘计算
深度学习在图像识别中的应用与挑战
【4月更文挑战第23天】 随着人工智能技术的飞速发展,深度学习作为其重要分支之一,在图像识别领域取得了显著的成果。本文将探讨深度学习在图像识别中的应用,分析其优势和面临的挑战,并展望未来的发展趋势。
|
3天前
|
机器学习/深度学习 数据采集 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第21天】 本文章深入探讨了深度学习技术在自动驾驶车辆图像识别领域的应用。不同于传统的摘要方式,本文将直接点出研究的核心价值和实际应用成果。我们专注于卷积神经网络(CNN)的创新设计,其在复杂道路场景下的行人和障碍物检测中的高效表现,以及这些技术如何整合到自动驾驶系统中以增强安全性和可靠性。通过实验验证,我们的模型在公开数据集上达到了行业领先水平的准确率,并且在真实世界的测试场景中展现了卓越的泛化能力。
|
3天前
|
机器学习/深度学习 算法 云计算
深度学习在图像识别中的应用与挑战
【4月更文挑战第21天】 随着计算机视觉技术的飞速发展,深度学习已经成为图像识别任务的核心动力。本文旨在探讨深度学习技术在图像识别领域的应用进展,分析其面临的主要挑战,并提出可能的解决方案。通过对卷积神经网络(CNN)的深入研究,我们揭示了其在图像分类、目标检测和语义分割中的关键作用。同时,数据不平衡、模型泛化能力和计算资源限制等问题也被详细讨论。文章最终指出了未来研究的方向,包括网络结构的优化、无监督学习的发展以及跨领域知识迁移的可能性。

热门文章

最新文章