学习笔记 | 深度学习开发—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

相关文章
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的新篇章:从理论到实践的飞跃####
本文深入剖析了深度学习的最新进展,探讨了其背后的理论基础与实际应用之间的桥梁。通过实例展示了深度学习如何革新计算机视觉、自然语言处理等领域,并展望了其未来可能带来的颠覆性变化。文章旨在为读者提供一个清晰的视角,理解深度学习不仅是技术的飞跃,更是推动社会进步的重要力量。 ####
137 61
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
1月前
|
缓存 TensorFlow 算法框架/工具
TensorFlow学习笔记(一): tf.Variable() 和tf.get_variable()详解
这篇文章详细介绍了TensorFlow中`tf.Variable()`和`tf.get_variable()`的使用方法、参数含义以及它们之间的区别。
71 0
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
6天前
|
机器学习/深度学习 数据采集 自然语言处理
深入浅出深度学习:从理论到实践
【10月更文挑战第38天】本文旨在通过浅显易懂的语言和直观的代码示例,带领读者探索深度学习的奥秘。我们将从深度学习的基本概念出发,逐步深入到模型构建、训练以及应用实例,让初学者也能轻松入门。文章不仅介绍了深度学习的原理,还提供了实战操作指南,帮助读者在实践中加深理解。无论你是编程新手还是有一定基础的学习者,都能在这篇文章中找到有价值的内容。让我们一起开启深度学习之旅吧!
|
26天前
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
33 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
6天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
27 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
6天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
6天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
8天前
|
机器学习/深度学习 自然语言处理 语音技术
深度学习的奇妙之旅:从理论到实践
【10月更文挑战第36天】在本文中,我们将一起探索深度学习的神秘世界。我们将首先了解深度学习的基本概念和原理,然后通过一个简单的Python代码示例,学习如何使用深度学习库Keras进行图像分类。无论你是深度学习的初学者,还是有一定基础的学习者,都可以从这篇文章中获得新的知识和启示。