TensorFlow学习笔记

本文详细介绍TensorFlow框架,涵盖其历史、支持语言、应用场景、计算图概念、有向图算法及安装配置方法。TensorFlow由GoogleBrain团队于2015年开源,不仅适用于深度学习,还支持线性回归、逻辑回归等多种算法。

TensorFlow是Google Brain 2015年11月在GitHub开源

TensorFlow官方网址:www.tensorflow.org

GitHub网址:https://github.com/tensorflow/tensorflow

模型仓库网址:https://github.com/tensorflow/models

TensorFlow支持的语言Python、C++、GO、Java,后端语言C++、CUDA(Compute Unified Device Architecture,可以在GPU上执行的语言,需要GPU显卡品牌为NVIDIA)

TensorFlow实现的算法可以在其他异构的系统上方便的移植,比如普通CPU服务器、GPU集群、Android、IPhone

TensorFlow不仅可以执行深度学习算法,还可以用来实现其他算法,包括线性回归、逻辑回归、随 机森林等

TensorFlow建立的大规模深度学习模型应用场景非常广,包括语音识别、自然语言处理、计算机 视觉、机器人控制、信息抽取、药物研发、分子活动预测

为了研究超大规模的深度神经网络,Google在2011年启动了Google Brain项目,比如Google Search中的搜索结果排序、Google Photos中的图片标注、Google Translate中的自然语言处理,都依赖建立的深度学习模型,2016年已经有超过2000个项目使用了TensorFlow建立的深度学习模型

TensorFlow中的计算可以表示为一个有向图(Directed Graph)或者称计算图(Computation Graph),其中每一个运算操作(operation)将作为一个节点(node),计算图描述了数据的计算流程,也负责维护和更新状态,用户通过python,c++,go,Java语言设计这个这个数据计算的有向图,计算图中每一个节点可以有任意多个输入和任意多个输出,每一个节点描述了一种运算操作,节点可以算是运算操作的实例化(instance),计算图中的边里面流动(flow)的数据被称为张量(tensor),故得名TensorFlow

有向无环图相关算法:CNN(卷积神级网络)、ANN(人工神经网络)、DNN(深度神经网络)

有向有环图相关算法:RNN(循环神经网络)

pip install –upgrade --user tensorflow==版本号 以更新依赖包管理员身份安装TensorFlow

tensorflow.__version__获取TensorFlow版本

tf.Variable生成变量节点

tf.device指定运行每一个操作的设备(本地CPU/GPU或远程服务器),每一个可用设备有相应的名称比如CPU在TensorFlow中的名称为/cpu:0,默认情况下不区分多个CPU名称所有CPU都使用/cpu:0作为名称,GPU名称/gpu:n(序列号n从0开始)

设置log_device_placement参数可以在生成会话时打印运行每一个运算的设备和运算的操作

TensorFlow默认优先选择GPU

TensorFlow程序会分为两部分,第一部分是构建阶段(创建计算图,通常建立表示机器学习模型的的计算图,和需要去训练模型的计算图),第二部分是执行阶段(通常运行Loop循环重复训练步骤,每一步训练小批量数据,逐渐的改进模型参数)

1.eval()

eval(expression[, globals[, locals]])
expression : 表达式。
globals : 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals : 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
举例:
1、简单表达式
print(eval(‘1+2’))
输出结果:3
2、字符串转字典
print(eval("{‘name’:‘linux’,‘age’:18}")
输出结果:{‘name’:‘linux’,‘age’:18}
3、传递全局变量
print(eval("{‘name’:‘linux’,‘age’:age}",{“age”:1822}))
输出结果:{‘name’: ‘linux’, ‘age’: 1822}
4、传递本地变量
age=18
print(eval("{‘name’:‘linux’,‘age’:age}",{“age”:1822},locals()))
输出结果:{‘name’: ‘linux’, ‘age’: 18}

2.tf.placeholder(dtype, shape=None, name=None)

参数:
dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
shape:数据形状。默认是None,就是一维值,也可以多维,比如:[None,3],表示列是3,行不一定
name:名称。
返回:
Tensor类型

3.with语句

tensorflow 学习过程中,经常用到with,值得一说。
With要搭配上下文管理器(Context Manager)对象使用。

所谓的上下文管理器对象,就是实现了上下文管理器协议(Context Manager Protocol)的对象。协议要求对象定义中必须实现__enter__()和__exit__()方法。

当看到下面语句时:

With Context Manager Object [as target]:
    Body

它有4个意思:

With块会在Body开始前自动调用Context Manager Object的__enter__()方法;
With块会在Body结束前自动调用Context Manager Object的__exit__()方法,即使Body还未执行完时发生了异常,exit()也总会被调用;
Body中出现异常时,Context Manager Object的__exit__()执行如果返回False,异常继续向上层抛出,如果返回True则该异常被忽略;
可选的as target并非是Context Manager Object本身,而是其调用__enter__()的返回值;
总的来说,With语句帮助上下文管理器对象实现了两个自动化的操作enter和exit,并充分考虑了异常情况。对于资源类对象(用完需要尽快释放)的使用,比如文件句柄、数据库连接等等,这无疑是一种简洁而完善的代码形式。

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Performer_Cherry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值