【TensorFlow】01 TensorFlow简介与Python基础

网友投稿 613 2022-05-30

TensorFlow简介与Python基础

2018.9.10

一、概述

TF使用数据数据流图进行数值计算,亮点是支持异构设备分布式计算机

常用的ML库有MXNet Torch/Pytorch Theano CNTK Caffe等

0阶张量(纯量),1阶张量(向量),2阶张量(矩阵)tensor(张量) flow(流动)

编程模式 命令式编程(Torch) 符号式编程(Tensorflow,theano 描述算法流程 放到其他语言执行)

TF使用数据流图来进行编程 是一种推断结构

TF的高层库()如Kearas(对用户友好,模块化)

Deep-learning主要的运算是浮点运算

TF的亮点之一是autograph模式

TF的功能:设计、训练、部署(唯一一个形成完整生态的ML sys)

二、环境配置

虚拟环境的安装

使用pip命令安装venv

sudo pip install virtualenv

cd 项目目录 切换到项目所在的目录

激活虚拟环境

virtualenv --system-site-packages venv

退出venv

deactivate

5、查看venv环境的python包版本

pip freeze

三、科学工具和流程

编译语言C,C++,Fortran 快,优化好,但语法不友好

脚本语言: Matlab 开发友好,收费,基础语言缺乏

R语言 偏向统计,不能完成所有的任务

高级的pyhton shell:IPython,Jupyter

python包:

Numpy:强大的数值对象操作

Scipy:高级的数据处理程序 (优化、回归差值等)

Matplotlib:2D可视化 (不可交互,对3D图像支持不好)

四、python基础

(一)数据类型

python的变量类型不像C++一样在定义时必须制定参数的变量类型,是一种动态语言

Python可以处理任意大小(没有大小限制)的正负整数,使用0x作为前缀表示十六进制

按照科学计数法表示的数字,比如1.23e9代表.23*e^9$

由于储存方式不同,整数永远是精确的,但是浮点数可以四舍五入

字符串是以单引号或者双引号括起来的任意文本

如果字符串里有很多字符需要转义,为简化可以使用r'',引号内的字符串默认不转义

print('\\t\')

\   \

print(r'\\t\')

\\t\

boolean只有True和false两种,其结果可由比较运算,逻辑运算得出(and,or,not)

当两个变量比较时,如果给定的变量值小于100,则使用is运算的得到的两个变量所得bool结果为true,否则为false(这是由于python在储存同一个变量是当变量的数值小于100是使用同一块内存,而大于100是则不使用同一块内存)

a = 1000b = 1000print(a is b) print(id(a),id(b))

False4526894320 4526894960

a = 100b = 100print(a is b) print(id(a),id(b))

True4305331680 4305331680

(二)字符串

在python保存源代码是,需要制定保存为UTF-8编码,当解释器读取时,在开头加上这两行文字(第一行告诉Unix系统这是一个python可执行程序,win会忽略这个注释,第二行是告诉编译器以utf-8的方式读取,否则中文不能正常编码):

#!/usr/bin/env python3#-*- coding: utf-8 -*-

在Python中,格式化方式与C相同,使用%实现。%s表示用字符串替换,%d表示用整数替换,有几个%?后面就需要跟几个变量或值,当变量大于2时需要用括号括起来,有一个的话可以省略

print("Hi,my name is %s, I'm %d years old."%('Alex',10))

Hi,my name is Alex, I'm 10 years old.

(三)循环

for x in ...就是把每个元素带入变量x,然后执行缩进块的语句

names = ['A','B','C']for name in names:     print(name)

AB C

使用range(n)可以生成一个迭代器,其值是0 ~ n-1

sum = 0for i in range(101):     sum = sum + i print(sum)

5050

使用while循环打印100以内所有奇数的和:

sum = 0n = 99while n>0:     sum = sum + n     n = n - 2print(sum)

2500

(四)Python数据结构

list是有序的集合,可以随时删除和添加元素

classlist = ['class1','class2','class3'] len(classlist)  #使用len可以获得列表的长度classlist[0] #使用下标可以访问list的元素(以0开始)classlist[-1] #使用负下标可以访问倒数的元素

'class3'

列表的插入

classlist.append('class4')  #尾插法print(classlist) classlist.insert(1,'class5') #指定索引插入print(classlist)

['class1', 'class2', 'class3', 'class4'] ['class1', 'class5', 'class2', 'class3', 'class4']

列表的删除

classlist.pop()  #如果pop不加参数,则删除最后一个,否则按照索引顺序删除print(classlist)

['class1', 'class5', 'class2', 'class3']

注意:

list中的元素数据类型可以不同

list中可以有另外的list

list中一个元素也没有,则其长度为0

元组的另一名称为有序列表,一旦初始化就不能修改,没有append和pop方法

tuple存在的意义在于tuple不可变,所以代码更安全,如果可能,尽量用tuple代替list

当定义只有一个元素的tuple时,需要将这个元素后面加上一个逗号,因为()可能会产生歧义。Python规定单独出现的小括号内容计算结果使其本身。

t = (1,)  #是(1,)而不是(1)print(t)

(1,)

注意:

要创建一个内容也不变的tuple必须保证tuple中的每一个元素本身不能变(不允许出现tuple中嵌套list的情况)

dict使用键-值(key-value)存储,具有很快的查找速度

dic = {'A':95,'B':80,'C':75} print(dic['A'])

95

修改dic某个key的值:

dic['A']=60print(dic['A'])

60

对比list与dict:

dict:查找插入速度快,不会因为key的增加而变慢,但浪费内存多

list:查找插入时间随着元素的增加而增加,但占用空间小,浪费内存少

注意:

dic是一种用空间换时间的存储结构(hash)

key必须是不可变的对象

set与dict类似,是key的集合,但不存储value,没有重复的key

重复的元素在set中被自动过滤掉:

s = set([1,1,2,2,3,3]) print(s)

{1, 2, 3}

其他方法:

add(key)可以添加元素到set中

remove(key)可以删除set中的元素

集合操作:

【TensorFlow】01 TensorFlow简介与Python基础

s1 = set([1,2,3]) s2 = set([2,3,4]) print(s1&s2) print(s1|s2)

{2, 3} {1, 2, 3, 4}

(五)切片

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

取得前三个元素:

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] print(L[:3])   #L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素#如果第一索引是0,可以省略

['Michael', 'Sarah', 'Tracy']

也可以负切片(记住倒数第一个元素的索引是 -1):

L[-2:]

['Bob', 'Jack']

前10个数,每两个取一个(第3个参数n为步长,代表隔n个数取出一个):

L = list(range(100))>>> L[::5] [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

(五)jupyter使用

魔法命令

import numpy as np

np.reshape??  #在命令后加??可以查看对应命令的帮助文档

File "", line 2     np.reshape??  #在命令后加??可以查看对应命令的帮助文档               ^SyntaxError: invalid syntax

a =[1,3,5]

%run my_file.py  #百分号后面的为魔法命令,可以执行非python的内容

%whos  #魔法命令:查看变量

%ls #支持大部分下的Linux命令%pwd

%timeit a    #使用timeit监测性能

for item in [1,3,5]:     print(item)

for item in range(10):     #range()可以生成迭代器,等价于range(0,10)     print(item)

-------------------------------------------

本文转自XuAn97916博客51CTO博客

TensorFlow 深度学习 python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云DevCloud助力爱丁云敏捷转型,提质增效
下一篇:重温HTTP,你到底做了什么?
相关文章