神经网络模型训练生产框架TensorFlow 网络搭建及训练 caffe Pytorch 网络搭建有什么原则 经典的网络模型 网络训练有哪些技巧

本文详细介绍了TensorFlow、PyTorch和Caffe三个深度学习框架,包括设计理念、系统架构、编程模型、网络搭建原则以及训练技巧。TensorFlow以其高度灵活性、可移植性和丰富的算法库受到广泛使用,PyTorch则以其简洁、易用和速度快的特点受到青睐,Caffe以其高效和易部署的特性在图像处理领域有重要应用。文章还探讨了网络搭建的原则,如深度优先、卷积核选择和经典网络模型的学习,以及训练技巧,如合适的数据集、预处理、初始化和学习率设置。
摘要由CSDN通过智能技术生成

神经网络 搭建及训练

TensorFlow

TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现。TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,是谷歌神经网络算法库DistBelief的后续项目。TensorFlow的主要特性包括强大的计算能力、灵活性、可扩展性、大规模计算支持、自动求导以及高效的模型部署等。

TensorFlow拥有多层级结构,可以部署于各类服务器、PC终端和网页,并支持GPU和TPU高性能数值计算。TensorFlow支持动态图和静态图两种模式,用户可以根据需要选择合适的模式进行开发。此外,TensorFlow还提供了TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud等多个项目以及各类应用程序接口(API),方便用户进行各种机器学习和深度学习应用的开发。

TensorFlow的应用场景非常广泛,包括机器学习、自然语言处理、图像处理、数据分析等多个领域。例如,在机器学习中,TensorFlow可以用于建立和训练各种机器学习模型,如线性回归、逻辑回归、决策树、随机森林、支持向量机、深度神经网络等。在自然语言处理领域,TensorFlow可以用于处理文本分类、情感分析、机器翻译、语音识别等任务。在图像处理方面,TensorFlow可以用于图像分类、目标检测、人脸识别等任务。

TensorFlow是一个功能强大、灵活易用的深度学习框架,适用于各种复杂的机器学习和深度学习应用。

TensorFlow支持各种异构平台,支持多CPU/GPU、服务器、移动设备,具有良好的跨平台的特性;TensorFlow架构灵活,能够支持各种网络模型,具有良好的通用性;此外,TensorFlow架构具有良好的可扩展性,对OP的扩展支持,Kernel特化方面表现出众。

TensorFlow最初由Google大脑的研究员和工程师开发出来,用于机器学习和神经网络方面的研究,于2015.10宣布开源,在众多深度学习框架中脱颖而出,在Github上获得了最多的Star量。

TensorFlow的设计理念是什么?

TensorFlow的设计理念主要体现在两个方面:

(1)将图定义和图运算完全分开。
  TensorFlow 被认为是一个“符号主义”的库。我们知道,编程模式通常分为命令式编程(imperative style programming)和符号式编程(symbolic style programming)。命令式编程就是编写我们理解的通常意义上的程序,很容易理解和调试,按照原有逻辑执行。符号式编程涉及很多的嵌入和优化,不容易理解和调试,但运行速度相对有所提升。现有的深度学习框架中,Torch 是典型的命令式的,Caffe、MXNet 采用了两种编程模式混合的方法,而 TensorFlow 完全采用符号式编程。

  符号式计算一般是先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量间的计算关系,最后需要对据流图进行编译,但此时的数据流图还是一个空壳儿,里面没有任何实际数据,只有把需要运算的输入放进去后,才能在整个模型中形成数据流,从而形成输出值。

例如:

t = 8 + 9
print(t)

  在传统的程序操作中,定义了 t 的运算,在运行时就执行了,并输出 17。而在 TensorFlow中,数据流图中的节点,实际上对应的是 TensorFlow API 中的一个操作,并没有真正去运行:

import tensorflow as tf
t = tf.add(8,9)
print(t)

#输出  Tensor{"Add_1:0",shape={},dtype=int32}

  (2)TensorFlow 中涉及的运算都要放在图中,而图的运行只发生在会话(session)中。开启会话后,就可以用数据去填充节点,进行运算;关闭会话后,就不能进行计算了。因此,会话提供了操作运行和 Tensor 求值的环境。

例如:

import tensorflow as tf
#创建图
a = tf.constant([4.0,5.0])
b = tf.constant([6.0,7.0])
c = a * b
#创建会话
sess  = tf.Session()
#计算c
print(sess.run(c))   #进行矩阵乘法,输出[24.,35.]
sess.close()

TensorFlow特点有哪些?

1.高度的灵活性

  TensorFlow 并不仅仅是一个深度学习库,只要可以把你的计算过程表示称一个数据流图的过程,我们就可以使用 TensorFlow 来进行计算。TensorFlow 允许我们用计算图的方式建立计算网络,同时又可以很方便的对网络进行操作。用户可以基于 TensorFlow 的基础上用 python 编写自己的上层结构和库,如果TensorFlow没有提供我们需要的API的,我们也可以自己编写底层的 C++ 代码,通过自定义操作将新编写的功能添加到 TensorFlow 中。

2.真正的可移植性

  TensorFlow 可以在 CPU 和 GPU 上运行,可以在台式机、服务器、移动设备上运行。你想在你的笔记本上跑一下深度学习的训练,或者又不想修改代码,想把你的模型在多个CPU上运行, 亦或想将训练好的模型放到移动设备上跑一下,这些TensorFlow都可以帮你做到。

3.多语言支持

  TensorFlow采用非常易用的python来构建和执行我们的计算图,同时也支持 C++ 的语言。我们可以直接写python和C++的程序来执行TensorFlow,也可以采用交互式的ipython来方便的尝试我们的想法。当然,这只是一个开始,后续会支持更多流行的语言,比如Lua,JavaScript 或者R语言。

4.丰富的算法库

  TensorFlow提供了所有开源的深度学习框架里,最全的算法库,并且在不断的添加新的算法库。这些算法库基本上已经满足了大部分的需求,对于普通的应用,基本上不用自己再去自定义实现基本的算法库了。

5.完善的文档

  TensorFlow的官方网站,提供了非常详细的文档介绍,内容包括各种API的使用介绍和各种基础应用的使用例子,也包括一部分深度学习的基础理论。

  自从宣布开源以来,大量人员对TensorFlow做出贡献,其中包括Google员工,外部研究人员和独立程序员,全球各地的工程师对TensorFlow的完善,已经让TensorFlow社区变成了Github上最活跃的深度学习框架。

TensorFlow的系统架构是怎样的?

  整个系统从底层到上层可分为七层:

  设备层:硬件计算资源,支持CPU、GPU

  网络层:支持两种通信协议

  数值计算层:提供最基础的计算,有线性计算、卷积计算

  高维计算层:数据的计算都是以数组的形式参与计算

  计算图层:用来设计神经网络的结构

  工作流层:提供轻量级的框架调用

  构造层:最后构造的深度学习网络可以通过TensorBoard服务端可视化

TensorFlow编程模型是怎样的?

TensorFlow的编程模型:让向量数据在计算图里流动。那么在编程时至少有这几个过程:1.构建图,2.启动图,3.给图输入数据并获取结果。

1.构建图

TensorFlow的图的类型是tf.Graph,它包含着计算节点和tensor的集合。

  这里引用了两个新概念:tensor和计算节点。
  我们先介绍tensor,一开始我们就介绍了,我们需要把数据输入给启动的图才能获取计算结果。那么问题来了,在构建图时用什么表示中间计算结果?这个时候tensor的概念就需要引入了。
  类型是tf.Tensor,代表某个计算节点的输出,一定要看清楚是“代表”。它主要有两个作用:

1.构建不同计算节点之间的数据流

2.在启动图时,可以设置某些tensor的值,然后获取指定tensor的值。这样就完成了计算的输入输出功能。

如下代码所示:

inImage = tf.placeholder(tf.float32,[32,32,3],"inputImage")
processedImage = tf.image.per_image_standardization(inImage,"processedImage")

  这里inImage和processedImage都是tensor类型。它们代表着计算节点输出的数据,数据的值具体是多少在启动图的时候才知道。上面两个方法调用都传递了一个字符串,它是计算节点的名字,最好给节点命名,这样我们可以在图上调用get_tensor_by_name(name)获取对应的tensor对象,十分方便。(tensor名字为“<计算节点名字>:<tensor索引>”)

  创建tensor时,需要指定类型和shape。对不同tensor进行计算时要求类型相同,可以使用 tf.cast 进行类型转换。同时也要求 shape (向量维度)满足运算的条件,我们可以使用 tf.reshape 改变shape。

  现在了解计算节点的概念,其功能是对tensor进行计算、创建tensor或进行其他操作,类型是tf.Operation。获取节点对象的方法为get_operation_by_name(name)。

构建图,如下代码:

g=tf.Graph()

with g.as_default():
    input_data=tf.placeholder(tf.float32,[None,2],"input_data")
    input_label=tf.placeholder(tf.float32,[None,2],"input_label")

    W1=tf.Variable(tf.truncated_normal([2,2]),name="W1")
    B1=tf.Variable(tf.zeros([2]),name="B1")

    output=tf.add(tf.matmul(input_data,W1),B1,name="output")
    cross_entropy=tf.nn.softmax_cross_entropy_with_logits(logits=output,labels=input_label)

    train_step=tf.train.AdamOptimizer().minimize(cross_entropy,name="train_step")

    initer=tf.global_variables_initializer()

  上面的代码中我们创建了一个图,并在上面添加了很多节点。我们可以通过调用get_default_graph()获取默认的图。

  Input_data,input_label,W1,B1,output,cross_entropy都是tensor类型,train_step,initer,是节点类型。

有几类tensor或节点比较重要,下面介绍一下&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

EwenWanW

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

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

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

打赏作者

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

抵扣说明:

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

余额充值