资讯详情

notebook1

深度学习框架paddlepaddle的简单使用

一、深度学习框架简介

tensorflow Google Python/C 机器智能开源软件库主要用于工业
pytorch Facebook Python 一个开源的Python机器学习库主要用于学术界
caffe BVLC C /Python 老牌深度学习框架
paddlepaddle 百度 C /Python 源于产业实践的开源深度学习平台
keras Fran?ois Chollet 等 Python 作为Tensorflow、Microsoft-CNTK和Theano高级应用程序接口
MXNet 亚马逊 Python/C /matlab 致力于提供兼顾性能和灵活性的深度 学习框架
CNTK 微软 C 语音和图像识别能力较好

二、Python简介

2.1 Python的安装过程

1.去官网下载稳定版。Python3.7.7(Windows版本)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9x3otqYy-161933938505paddlepaddle的简单使用.assets/image-20200422102046371.png)]

2.安装Python(勾选添加到环境变量)Customize installation

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-x8pkmajc-161933938510paddlepaddle的简单使用.assets/20200422220000.png)]

3.点击Next

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-nUJKVf8f-161933938516paddlepaddle的简单使用.assets/20200422220014.png)]

4.选择安装路径(非系统盘)

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-4W3Xu6UL-161933938518paddlepaddle的简单使用.assets/20200422220101.png)]

5.添加到环境变量(未勾选)Add Python to PATH处理),右击计算机,选择属性

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-wZuiJMUD-16193393851paddlepaddle的简单使用.assets/20200422220440.png)]

6.选择高级系统设置

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-Snq85Rww-16193393852paddlepaddle的简单使用.assets/20200422220453.png)]

7.选择环境变量

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-CmNCdmZP-16193393854paddlepaddle的简单使用.assets/20200422220509.png)]

8.将Python添加安装路径PATH的值中,PATH其中,值如下所示C:\develop\Python\Python37是Python根目录的安装

PATH值:

C:\develop\Python\Python37\Scripts\;C:\develop\Python\Python37\; 

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-3Kjva3ql-16193393856paddlepaddle的简单使用.assets/20200422220546.png)]

9.验证安装是否成功

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-2E22kHNk-161933938528paddlepaddle的简单使用.assets/20200422222651.png)]

10.更新pip至最新版本

python -m pip install --upgrade pip 

2.2 Python简介

,因此,在执行程序之前,必须将程序员写的程序语言翻译成机器语言。

有两种方法可以翻译编译器:一种是,另外一个是。两种方法的区别在于。当编译器,也称之为,Python编译器以解释的方式运行,因此Python它是一种解释性语言。

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-FhHvVFRI-16193393840paddlepaddle的简单使用.assets/001_对比编译和解释语言.png)]

  • :程序在执行前需要一个特殊的编译过程,将程序编译成机器语言文件,直接使用编译结果。程序执行效率高,依赖编译器,跨平台性差。 C、C
  • :解释型语言编写的程序不进行预先编译,以文本方式存储程序代码,会将代码一句一句直接运行。在发布程序时,看起来省了道编译工序,但是在运行程序的时候,必须先解释再运行

2.3 Python 特点

  • Python 是
    • 都是对象,
    • 全力支持继承、重载、多重继承
    • 支持重载运算符和泛型设计l>
  • Python ,Python 语言的核心只包含 等常见类型和函数,而由 Python 标准库提供了 等额外的功能
  • Python 社区提供了,使用方式与标准库类似。它们的功能覆盖 多个领域

三、Python 的 IDE -PyCharm

3.1 集成开发环境(IDE)

集成开发环境(IDE,Integrated Development Environment)—— ,一般包括以下工具:

  • 图形用户界面
  • 代码编辑器(支持
  • 编译器/解释器
  • 调试器(
  • ……

3.2 PyCharm 介绍

  • PyCharm 是 Python 的一款非常优秀的集成开发环境
  • PyCharm 除了具有一般 IDE 所必备功能外,还可以在 WindowsLinuxmacOS 下使用
  • PyCharm 适合开发大型项目
    • 一个项目通常会包含
    • 每个 的代码行数是有限的,通常在几百行之内
    • 每个 各司其职,共同完成复杂的业务功能

3.3 PyCharm安装过程

1.去PyCharm官网下载PyCharm(PyCharm下载地址),下载社区免费版即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U1xEbyj4-1619333938550)(深度学习框架paddlepaddle的简单使用.assets/image-20200422142125161.png)]

2.安装PyCharm,选择安装路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OS1iQDQ5-1619333938552)(深度学习框架paddlepaddle的简单使用.assets/20200422225434.png)]

3.全部勾选,点击Next

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tl6qH61c-1619333938554)(深度学习框架paddlepaddle的简单使用.assets/20200422225933.png)]

4.点击Install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvauZPnS-1619333938557)(深度学习框架paddlepaddle的简单使用.assets/20200422225942.png)]

3.4 PyCharm的初始设置

3.5 在PyCharm中创建Python项目

方式一:New Project

1.选择File->New Project

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MJig4L5H-1619333938564)(深度学习框架paddlepaddle的简单使用.assets/image-20200422235000341.png)]

2.选好项目的位置,点击下方的侧三角

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k54l8GwF-1619333938568)(深度学习框架paddlepaddle的简单使用.assets/image-20200422235133651.png)]

3.按顺序点击

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JF93JhQf-1619333938570)(深度学习框架paddlepaddle的简单使用.assets/image-20200422235232446.png)]

4.按顺序点击

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a3gRqq1m-1619333938572)(深度学习框架paddlepaddle的简单使用.assets/image-20200422235323191.png)]

5.选择Python的安装路径下的pytho.exe

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ffMdnfl-1619333938576)(深度学习框架paddlepaddle的简单使用.assets/image-20200422235435893.png)]

方式二:Open

直接打开一个文件夹作为项目的根目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z04Uf09y-1619333938580)(深度学习框架paddlepaddle的简单使用.assets\20200426141818.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eFZbT3tY-1619333938583)(深度学习框架paddlepaddle的简单使用.assets\20200426141841.png)]

为当前项目选择解释器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-niuTfPXv-1619333938585)(深度学习框架paddlepaddle的简单使用.assets\20200426143759.png)]

3.6 PyCharm 项目布局

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qb8Tgv6b-1619333938587)(深度学习框架paddlepaddle的简单使用.assets/001_PyCharm的界面结构.png)]

  • 能够 项目文件
  • 能够 当前打开的文件
  • 能够:
    • 输出程序执行内容
    • 跟踪调试代码的执行

四、Python的使用

4.1 Python的缩进规则

Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符决定作用域的范围;Python使用缩进空格来表示作用域的范围,相同缩进行的代码是处于同一范围)。

4.2 Python的简单使用

4.2.1 注释

C语言程序都必须有一个且只能有一个 main()函数,python直接可以从上至下运行,无需入口函数。

print("hello Python!")#打印hello Python!
print("hello World!")#打印hello World!

4.2.2 变量

  • 在 Python 中,每个变量 在,变量 赋值以后 该变量 才会被创建
  • 等号(=)用来给变量赋值
    • = 左边是一个变量名
    • = 右边是存储在变量中的值
#变量名 = 值
a = 3

Python 中定义变量是 (在其他很多高级语言中都需要),数据类型可以分为

    • 整型 (int)
    • 浮点型(float
    • 布尔型(bool
      • True 非 0 数 ——
      • False 0
    • 复数型 (complex)
      • 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
    • 字符串(str)
    • 列表(list)
      • 元组(tuple)
    • 字典(dict)

使用 type 函数可以查看一个变量的类型

a = 3.0
print(type(a))#<class 'float'>

4.2.3 运算符

  • 是完成基本的算术运算使用的符号,用来处理四则运算
运算符 描述 实例
+ 10 + 20 = 30
- 10 - 20 = -10
* 10 * 20 = 200
/ 10 / 20 = 0.5
// 取整除 返回除法的整数部分(商) 9 // 2 输出结果 4
% 取余数 返回除法的余数 9 % 2 = 1
** 又称次方、乘方,2 ** 3 = 8
  • 在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果
print("-" * 50)#'----------------------------------------' 

运算符 描述
== 检查两个操作数的值是否 ,如果是,则条件成立,返回 True
!= 检查两个操作数的值是否 ,如果是,则条件成立,返回 True
> 检查左操作数的值是否 右操作数的值,如果是,则条件成立,返回 True
< 检查左操作数的值是否 右操作数的值,如果是,则条件成立,返回 True
>= 检查左操作数的值是否 右操作数的值,如果是,则条件成立,返回 True
<= 检查左操作数的值是否 右操作数的值,如果是,则条件成立,返回 True

运算符 逻辑表达式 描述
and x and y 只有 x 和 y 的值都为 True,才会返回 True否则只要 x 或者 y 有一个值为 False,就返回 False
or x or y 只要 x 或者 y 有一个值为 True,就返回 True只有 x 和 y 的值都为 False,才会返回 False
not not x 如果 x 为 True,返回 False如果 x 为 False,返回 True

  • 在 Python 中,使用 = 可以给变量赋值
  • 在算术运算时,为了简化代码的编写,Python 还提供了一系列的 与 对应的
  • 注意:
运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
%= (余数)赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a

  • 以下表格的算数优先级由高到最低顺序排列
运算符 描述
** 幂 (最高优先级)
* / % // 乘、除、取余数、取整除
+ - 加法、减法
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
not or and 逻辑运算符

4.2.4 循环

主要学习for循环

对比python和c++中的for循环

for i in range(10):
    print(i,end="")
#结果:0,1,2,3,4,5,6,7,8,9
for(int i=0;i<10;i++){
    cout<<i;
}
#结果:0,1,2,3,4,5,6,7,8,9

4.2.5 函数

def 函数名():

    函数封装的代码
    ……
  • def 是英文 define 的缩写
  • 应该能够表达 的功能,方便后续的调用
  • 的命名应该
    • 可以由 组成

4.2.6 非数字型类型变量的使用

Python 中,所有 都支持以下特点:

  • 都是一个 sequence,也可以理解为
  • []
  • for in
  • + *

def test1():
    # - 都是一个 ** 序列 ** `sequence`,也可以理解为 ** 容器 **
    # - ** 取值 ** `[]`
    # - ** 遍历 ** `
    # for in `
    # - ** 计算长度 **、 ** 最大 / 最小值 **、 ** 比较 **、 ** 删除 **
    # - ** 链接 ** `+` 和 ** 重复 ** `*`
    # - ** 切片 **
    a = []
    print(a)
    a.append(3)
    a.append('xiaoming')
    a.clear()
    a = [1,2,3,4,5,6]
    print(a[3])
    print(a[1:3])
    b = [7,8,9]
    c = a + b
    print(c)
    print(len(c))
    d = []
    d.append(a)
    d.append(b)
    d.append(c)
    print(d)
    print(len(d))   
def testStr():
    #字符串拼接
    a = 'hello'
    b = 'world'
    c = a + ',' + b
    print(c)#'hello,world'
    #字符串分割成字符数组
    str1 = 'hello,world,hello,python'
    str1_list = str1.split(",")
    print(str1_list)#['hello','world','hello','python']
    #字符数组拼接成字符串
    str2_list = ["It's", 'a', 'Lovely', 'Day', 'Today']
    str2 = ' '.join(str2_list)
    print(str2)#It's a Lovely Day Today
    #字符串的格式化
    for i in range(10):
        str_format = ("%-"+str(i+1)+"s:line")%(i)
        print(str_format)
if __name__== '__main__':
    testStr()

def testList():
    a = []#定义空列表
    a.append(3)#增,[3]
    a.append("xiaoming")#增,[3,'xiaoming']
    a.pop(1)#删,[3]
    a.append('xiaoming')#增,[3,'xiaoming']
    a[1]='xiaohong'#改,[3,'xiaohong']
	#查,查询a中所有的元素并打印
    for data in a:
        print(data)
if __name__=='__main__':
    testList()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vlbrxMyk-1619333938588)(深度学习框架paddlepaddle的简单使用.assets/杨辉三角_1-1587949541718.png)]

分析:

  • 设杨辉三角为pascalTriangle,行号为i,列号为j
  • 行号i的取值范围0~numOfRows-1,每一行中,列号j的取值范围为0~i
  • j=0i=j时等于行号的时,值为1,其它为:pascalTriangle[i-1][j-1]+pascalTriangle[i-1][j]

  • 设单位长度为unitLength
  • i行首元素缩进的规律是(numOfRows-i+1)*unitLength
  • 首位元素定位完之后,然后保证每一个元素的打印宽度为unitLength*2即可
def isoscelesTriangle(numOfRows,unitLength):
    space = " "
    star = "*"
    for i in range(numOfRows):
        #首元素缩进
        beginSpace = space*( (numOfRows-i+1) * unitLength )
        print( "%s"%( beginSpace ),end="" )
        for j in range(i+1):
            #字符串拼接+格式化输出
            print(("%-"+str(unitLength*2)+"s")%(star),end="")
        print("\n")
def printPascalTriangle(numOfRows,unitLength):
    space = " "
    pascalTriangle = []
    for i in range(numOfRows):
        pascalTriangle.append([1]*(i+1))
    for i in range(numOfRows):
        for j in range(i):
            if(i!=j) and j!=0:
                pascalTriangle[i][j] = pascalTriangle[i - 1][j - 1] + pascalTriangle[i - 1][j]
    for i in range(numOfRows):
        #首元素缩进
        beginSpace = space * ((numOfRows - i + 1) * unitLength)
        print("%s" % (beginSpace), end="")
        for j in range(i+1):
            #字符串拼接+格式化输出
            print(("%-" + str(unitLength*2) + "d") % (pascalTriangle[i][j]), end="")
        print("\n")
if __name__ == '__main__':
    isoscelesTriangle(10,4)
    printPascalTriangle(10,4)

4.2.7 文件的读写

**材料:**德国手语数据集的三个文件phoenix2014T.dev.glossphoenix2014T.dev.signphoenix2014T.vocab.gloss

**需求:**将phoenix2014T.dev.gloss中的gloss标签全部转换成数字标签,然后写入到phoenix2014T.dev.sign中每个对应的视频的后面,以#分割

def combineSignAndGloss():
    parentPath = 'C:/workspace/PyCharm/PycharmProjects/testPython/txtFile/'
    file1 = parentPath + 'phoenix2014T.dev.sign'
    file2 = parentPath + 'phoenix2014T.dev.gloss'
    file3 = parentPath + 'phoenix2014T.vocab.gloss'
    file4 = parentPath + 'phoenix2014T_sign_numLabel.txt'
    fo1 = open(file1,'r')
    fo2 = open(file2,'r')
    fo3 = open(file3,'r')
    fw1 = open(file4,'w')

    vocabLines = fo3.readlines()
    vocabGloss = { 
        }
    for i,v in enumerate(vocabLines):
        v = v.strip()
        vocabGloss[v] = i
    line1 = fo1.readline()
    line2 = fo2.readline()
    while line1 and line2:
        videoPath = line1.strip()
        glossLabel = line2.strip()
        splitGlossLabel = glossLabel.split(' ')
        strNumLabel = []
        for l in splitGlossLabel:
            if l in vocab_gloss.keys():
                strNumLabel.append(str(vocabGloss[l]))
            else:
                strNumLabel.append(str(vocabGloss['<unk>']))
        strNumLabel = " ".join(strNumLabel)
        fw1.write("%s#%s\n"%(videoPath,strNumLabel))
        line1 = fo1.readline()
        line2 = fo2.readline()
if __name__ == '__main__':
    combineSignAndGloss()

4.2.8 numpy的使用

Numpy:提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。

  • 高性能科学计算和数据分析的基础包
  • ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间
  • 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
  • 线性代数、随机数生成
  • import numpy as np
import numpy as np
# list序列转换为 ndarray
lis = range(10)
arr = np.array(lis)

print(arr)            # ndarray数据
print(arr.ndim)        # 维度个数
print(arr.shape)    # 维度大小

# list of list嵌套序列转换为ndarray
lis_lis = [range(10), range(10)]
arr = np.array(lis_lis)

print(arr)            # ndarray数据
print(arr.ndim)        # 维度个数
print(arr.shape)    # 维度大小

# 多维数组
arr2 = np.arange(12).reshape(3,4)
print(arr2)

print(arr2[1])

print(arr2[0:2, 2:])

print(arr2[:, 1:3])

五、PaddlePaddle的安装

1.进入PaddlePaddle官网(PaddlePaddle官网),选择好自己的操作系统、安装方式、Python版本、CUDA版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89gxCtVy-1619333938590)(深度学习框架paddlepaddle的简单使用.assets/image-20200422143005597.png)]

2.进入命令行界面,粘贴安装命令(默认安装paddlepaddle的最新版本,如果想安装指定版本可以在安装命令后面加上"==版本号")

1)安装指定版本的命令

python -m pip install paddlepaddle==1.7.1 -i https://mirror.baidu.com/pypi/simple
pip install 模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple#使用清华镜像源安装软件的指令

六、PaddlePaddle的使用

1.基本概念

1).Tensor

在神经网络中传递的数据都是Tensor。Tensor可以简单理解成一个多维数组,一般而言可以有任意多的维度。 不同的Tensor可以具有自己的数据类型和形状,同一Tensor中每个元素的数据类型是一样的,Tensor的形状就是Tensor的维度。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jnx0OE6j-1619333938594)(深度学习框架paddlepaddle的简单使用.assets/tensor.jpg)]

2).Operator

在飞桨中,所有对数据的操作都由Operator表示,因为一些常见的对Tensor的操作可能是由更多基础操作构成,为了提高使用的便利性,框架内部对基础 Operator 进行了一些封装,包括创建 Operator 依赖可学习参数,可学习参数的初始化细节等,减少用户重复开发的成本。

3).Program

用户定义Operator会被顺序的放入Program中,最终构成想要的网络结构。

4).Executor

执行器,执行program中定义的运算。

5).place

指定执行器执行时所在的设备。

2.线性回归

  • 用给定的样本训练一个线性模型
  • 用训练好的模型进行预测
  • 本例中训练样本是通过x = np.linspace(-100, 100, 100)y = np.linspace(-100, 100, 100)产生,x,y是-100~100之间均匀产生的100个数。z=x+y,这是三维空间中的一个平面.
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
import numpy as np
import math
ax = plt.axes(projection='3d')

import paddle.fluid as fluid
import paddle.fluid.layers as layers
from visualdl import LogWriter

def print3Dgraph():
    def f(x,y):
        return x+y
    #均匀的聪-100~100中产生100个数
    x = np.linspace(-100, 100, 100)
    y  

标签: 683m积层电容

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台