Ⅰ 超值一篇分享,Docker:从入门到实战过程全记录
作者 | 天元浪子
来源 | CSDN博客
想要真正理解Docker,就不得不从虚拟化技术的发展历程说起。普遍认为虚拟化技术经历了物理机时代、虚拟机时代,目前已经进入到了容器化时代。可以说,Docker是虚拟化技术不断发展的必然结果。
那么,什么是容器呢?容器和虚拟机有什么不同?Docker和容器又是什么关系呢?搞明白这几个问题,Docker的概念就清晰了。
1.1 虚拟机和容器
借助于VMWare等软件,可以在一台计算机上创建多个虚拟机,每个虚拟机都拥有独立的操作系统,可以各自独立的运行程序。这种分身术虽然隔离度高(操作系统级),使用方便(类似物理机),但占用存储资源多(GB级)、启动速度慢(分钟级)的缺点也是显而易见的。
相较于虚拟机,容器(Container)是一种轻量型的虚拟化技术,它虚拟的是最简运行环境(类似于沙盒)而非操作系统,启动速度快(秒级)、占用存储资源少(KB级或MB级),容器间隔离度为进程级。在一台计算机上可以运行上千个容器,这是容器技术对虚拟机的碾压式优势。
1.2 容器、镜像和Docker
Docker是一个开源的应用容器引擎,可以创建容器以及基于容器运行的程序。Docker可以让开发者打包他们的应用和依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
听起来很简单,但是在Docker和容器之间,还隐藏着一个镜像的概念,令初学者颇感困惑。本质上,Docker镜像是一个特殊的文件系统,它提供容器运行时所需的程序、库、资源、配置等文件。Docker镜像类似于一个py文件,它需要Docker的运行时(类似于Python解释器)运行。镜像被运行时,即创建了一个镜像的实例,一个实例就是一个容器。
1.3 Docker 和 k8s
作为容器引擎,Docker为容器化的应用程序提供了开放的标准,使得开发者可以用管理应用程序的方式来管理基础架构,实现快速交付、测试和部署代码。随着容器的大量使用,又产生了如何协调、调度和管理容器的问题,Docker的容器编排应运而生。
k8s是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制。
Docker和k8sr都是以containerd(容器化标准)作为运行时,因此使用Docker创建的镜像完全可以在k8s中无障碍的使用。
2.1 在ubuntu中安装
在linux系统中安装Docker非常简单,官方为我们提供了一键安装脚本。这个方法也适用于Debian或CentOS等发行版。
安装过程如果出现超时,不要灰心,多试几次,总会成功的。安装完成后,Docker只能被root用户使用,可以使用下面的命令取消权限限制:
然后,重启docker服务:
最后,关闭当前的命令行,重新打开新的命令行就可以了。
顺便提一下,如果在CentOS下安装,可能会出现一堆类似于下面的错误:
这是由于docker和Podman冲突造成的,需要先卸载Podman:
2.2 在Win10中安装
Docker的运行,依赖linux的环境,官方提供了Docker Desktop for Windows,但是它需要安装Hyper-V,Hyper-V是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
我的电脑是win10家庭版,不能直接安装hyper-v,需要将下面的命令保存到cmd文件中:
然后在cmd文件上点击右键,选择使用管理员运行。执行完毕后会重启,在重启的过程中进行安装。
2.3 Hello world
docker服务启动的情况下,运行下面的命令:
此命令的含义是:
第一次运行时,因为本地没有ubuntu:20.04镜像,docker会自动从镜像服务器下载。下载过程可能需要多试几次,只要成功一次,以后执行就不再需要下载了。
docker官方还提供了一个hello-world镜像,可以直接运行:
此命令省略了镜像版本和运行参数,docker使用latest作为版本,即最新版本。
从hello world的例子中,也可以体验到,docker实例的运行是非常快的。
docker官方的镜像库比较慢,在进行镜像操作之前,需要将镜像源设置为国内的站点。
新建文件/etc/docker/daemon.json,输入如下内容:
然后重启docker的服务:
3.1 列出本地所有镜像
执行命令 docker images 可以查看
当前我本地只有刚才安装的两个镜像。
3.2 从镜像库中查找镜像
执行命令 docker search 镜像名称可以从docker镜像库中查找镜像。
最好选择官方(OFFICIAL)的镜像,这样的镜像最稳定一些。
3.3 下载新的镜像
执行命令docker pull 镜像名称:版本号即可下载新的镜像。
镜像下载后,就可以使用镜像来创建容器了。
4.1 启动容器
执行命令docker run即可启动容器,也就是创建某个镜像的实例。docker run命令非常复杂,可以先执行一个docker run --help来查看帮助:
比如我们要执行python的shell,需要添加-it参数,即:docker run -it python:3.8
4.2 将宿主机的文件挂载到容器
docker容器与宿主机是隔离的,要想让容器内的程序能访问宿主机上的文件,需要通过-v参数将宿主机的文件挂载到容器中。
比如我们在宿主机上有一个hello.py,可以打印hello,想要在python容器中执行,就需要进行挂载。-v后还需要接两个参数,分别是宿主机的目录和容器内的目录,两者使用:分隔,路径必须都是绝对路径。
我的hello.py保存在主目录的/docker_test目录中,将这个目录挂载到容器的/docker_test目录,然后在容器内执行python /docker_test/hello.py:
4.3 容器的端口映射
我们修改一下hello.py,创建一个socket服务端,并监听5000端口,当有客户端连接时,打印客户端的地址,先客户端发送hello,然后关闭连接:
在容器内执行:
接下来,尝试用telnet命令连接,结果却是失败的。原因是,127.0.0.1是宿主机的ip地址,5000是容器的端口,这与我们的习惯稍微有些不同。事实上,docker的容器是非常轻量的,它并没有自己的网络,要想访问容器的端口,需要进行端口映射,将容器的某端口映射到宿主机的端口,客户端连接时,只要与宿主机的端口进行连接就可以了。
需要注意的是,上面的代码创建的服务器,无论如何也不可能被客户端连接,因为代码中绑定了127.0.0.1的ip,在容器中运行时,需要绑定所有ip,即0.0.0.0。
然后,再使用-p参数,-p还需要三个参数,即宿主机的ip地址、宿主机的端口、容器的端口,三者之间使用:分隔。一般的,可以将宿主机的ip地址省略,只写宿主机的端口:容器的端口即可。
这样,就将容器的5000端口映射到了宿主机的5001端口,使用:
即可与容器中的服务器进行连接。
4.4 容器管理
上面的服务运行之后,可以使用docker ps命令,查看运行中的容器:
显示的内容有下面几列:
要想结束容器,可以使用docker kill 容器ID命令。
一般而言,当我们的程序开发完成后,会连同程序文件与运行环境一起制作成一个新的镜像。
要制作镜像,需要编写Dockerfile。DockeFile由多个命令组成,常用的命令有:
注意,Docker镜像中有一个层的概念,每执行一个RUN命令,就会创建一个层,层过多会导致镜像文件体积增大。尽量在RUN命令中使用&&连接多条shell命令,减少RUN命令的个数,可以有效减小镜像文件的体积。
5.1 自制显示文本文件内容镜像
编写cat.py,接收一个文件名,由python读取文件并显示文件的内容:
这个例子比较简单,缩写Dockerfile如下:
这个Dockerfile的含义是:
需要说明的是,ENTRYPOINT有两种写法:
这里采用第二种写法,是因为我们要在外部给容器传递参数。执行命令编译Docker镜像:
这个命令中,-t的含义是目标,即生成的镜像名为hello,版本号为1.0,别忘了最后那个.,这叫到上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
这样,我们的第一个镜像就制作完成了,使用下面的命令执行它:
即可看到~/docker_test/cat/files/test.txt的内容。
5.2 自制web服务器镜像
我们使用tornado开发一个网站,而python的官方镜像是没有tornado库的,这就需要在制作镜像时进行安装。
测试的ws.py如下:
编写Dockerfile文件如下:
在此我们验证一下CMD与ENTRYPOINT的区别。在Dockerfile所在有目录下执行如下命令:
执行完成后,再使用docker images使用就可以看到生成的镜像了,然后使用下面的命令运行:
在浏览器中输入宿主机的ip和8000端口,就可以看到页面了。
在这个例子中,我使用的运行命令是CMD,如果在docker run中指定的其他的命令,此命令就不会被执行,如:
此时,容器中被执行的是python命令,而不是我们的服务。在更多情况下,我们希望在docker run命令中为我们的服务传参,而不是覆盖执行命令,那么,我们应该使用ENTRYPOINT而不是CMD:
上面这种写法,是不支持传递参数的,ENTRYPOINT和CMD还支持另一种写法:
使用这种写法,docker run命令中的参数才可以传递给hello.py:
这个命令中,--port=9000被作为参数传递到hello.py中,因此容器内的端口就成了9000。
在生产环境中运行时,不会使用-it选项,而是使用-d选项,让容器在后台运行:
这种方式下,即使当前的控制台被关闭,该容器也不会停止。
5.3 自制apscheler服务镜像
接下来,制作一个使用apscheler编写的服务镜像,代码如下:
Dockerfile也是信手拈来:
生成镜像:
应该可以运行了,文件复制需要两个目录,在运行时,可以使用两次-v来挂载不同的目录:
前面用到的官方python镜像大小足足882MB,在这个基础上,再安装用到的第三方库,添加项目需要的图片等资源,大小很容易就超过1个G,这么大的镜像,网络传给客户非常的不方便,因此,减小镜像的体积是非常必要的工作。
docker hub上有个一python:3.8-alpine镜像,大小只有44.5MB。之所以小,是因为alpine是一个采用了busybox架构的操作系统,一般用于嵌入式应用。我尝试使用这个镜像,发现安装一般的库还好,但如果想安装numpy等就会困难重重,甚至网上都找不到解决方案。
还是很回到基本的路线上来,主流的操作系统镜像,ubuntu的大小为72.9MB,centos的大小为209MB——这也算是我更喜欢使用ubuntu的一个重要原因吧!使用ubuntu作为基础镜像,安装python后的大小为139MB,再安装pip后的大小一下子上升到了407MB,要是再安装点其他东西,很容易就赶上或超过python官方镜像的大小了。
看来,寻常路线是很难压缩镜像文件体积了。幸好,还有一条曲线救国的路可走,这就是多阶段构建法。
多阶段构建的思想其实很简单,先构建一个大而全的镜像,然后只把镜像中有用的部分拿出来,放在一个新的镜像里。在我们的场景下,pip只在构建镜像的过程中需要,而对运行我们的程序却一点用处也没有。我们只需要安装pip,再用pip安装第三方库,然后将第三方库从这个镜像中复制到一个只有python,没有pip的镜像中,这样,pip占用的268MB空间就可以被节省出来了。
1、在ubuntu镜像的基础上安装python:
然后运行:
这样,就生成了python:3.8-ubuntu镜像。
2、在python:3.8-ubuntu的基础上安装pip:
然后运行:
这样,就生成了python:3.8-ubuntu-pip镜像。
3、多阶段构建目标镜像:
这个dockerfile需要解释一下了,因为它有两个FROM命令。
第一个是以python:3.8-ubuntu-pip镜像为基础,安装numpy,当然,在实际应用中,把所有用到的第三方库出写在这里。
第二个FROM是以FROM python:3.8-ubuntu镜像为基础,将第三方库统统复制过来,COPY命令后的–from=0的意思是从第0阶段进行复制。实际应用中再从上下文中复制程序代码,添加需要的ENTRYPOINT等。
最后,再运行:
这然,用于我们项目的镜像就做好了。比使用官方python镜像构建的版本,小了大约750MB。
到此,我们的镜像已经制作好了,可是,镜像文件在哪,如何在生产环境下运行呢?
刚才使用docker images命令时,已经看到了生成的镜像:
我们可以使用docker save命令将镜像保存到指定的文件中,保存的文件是一个.tar格式的压缩文件:
将hello.tar复制到生产环境的机器上,然后执行导入命令:
就可以使用了。
Ⅱ 如何访问docker容器的web
需要前目录建立三文件
1).gitignore
node_moles/*
2)package.json
{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Daniel Gasienica ",
"dependencies": {
"express": "3.2.4"
}
}
3)server.js
var express = require('express'),
app = express(),
redis = require('redis'),
RedisStore = require('connect-redis')(express),
server = require('http').createServer(app);
app.configure(function() {
app.use(express.cookieParser('keyboard-cat'));
app.use(express.session({
store: new RedisStore({
host: process.env.REDIS_HOST || 'localhost',
port: process.env.REDIS_PORT || 6379,
db: process.env.REDIS_DB || 0
}),
cookie: {
expires: false,
maxAge: 30 * 24 * 60 * 60 * 1000
}
}));
});
app.get('/', function(req, res) {
res.json({
status: "ok"
});
});
var port = process.env.HTTP_PORT || 3000;
server.listen(port);
console.log('Listening on port ' + port);
配置Dockerfile
我需要通Dockerfile配置我docker镜像
FROM ubuntu:14.04
MAINTAINER zengjinlong
RUN apt-get update
#Install Redis
RUN apt-get -y -qq install python redis-server
RUN apt-get -y -qq install wget
#Install Node
RUN cd /opt && \
wget && \
tar -xzf node-v0.10.33-linux-x64.tar.gz && \
mv node-v0.10.33-linux-x64 node && \
cd /usr/local/bin && \
ln -s /opt/node/bin/* . && \
rm -f /opt/node-v0.10.33-linux-x64.tar.gz
#Set the working directory
WORKDIR /src
j
CMD ["/bin/bash"]
Dockerfile通docker build建立我镜像
docker build -t minimicall/node_web:0.1 .
需要说明需要灵根据ubuntu真实环境变化间指令例,我第执行候告诉我找python redis-server我想应该我apt 源太out所我加RUN apt-get update.解决问题
我wget候说没指令我安装wget.nodejs址我nodejs官网查找所碰问题具体问题具体析
查看我建立镜像
micall@micall-ThinkPad:~/docker/nodejs_web_app$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
minimicall/node_web 0.1 730770dff17f 6 minutes ago 268.7 MB
centos centos6 70441cac1ed5 2 weeks ago 215.8 MB
ubuntu 14.04 5506de2b643b 4 weeks ago 199.3 MB
启我镜像:
sudo docker run -i -t --rm \
> -p 3000:3000 \
> -v `pwd`:/src \
> minimicall/node_web:0.1
候我已经进入镜像启容器面
root@d80a2ed6b4c0:/src#
执行列命令
root@d80a2ed6b4c0:/src# npm install --quiet > /dev/null
npm WARN engine [email protected]: wanted: {"node":"<0.9.0"} (current: {"node":"0.10.33","npm":"1.4.28"})
root@d80a2ed6b4c0:/src# npm install -g nodemon --quiet > /dev/null
root@d80a2ed6b4c0:/src# ls
Dockerfile Dockerfile~ index.js~ package.json server.js src
Dockerfile.centos index.js node_moles package.json~ server.js~
root@d80a2ed6b4c0:/src# nodemon server.js
22 Nov 14:37:31 - [nodemon] v1.2.1
22 Nov 14:37:31 - [nodemon] to restart at any time, enter `rs`
22 Nov 14:37:31 - [nodemon] watching: *.*
22 Nov 14:37:31 - [nodemon] starting `node server.js`
Listening on port 3000
候用浏览器打:结
{
"status": "ok"
}
Ⅲ 想做Python Web 开发,需要掌握哪些技能
Python的学习内容还是比较多的,我们将学习的过程划分为4个阶段,每个阶段学习对应的内容,具体的学习顺序如下:
Python学习顺序:
①Python软件开发基础
掌握计算机的构成和工作原理
会使用Linux常用工具
熟练使用Docker的基本命令
建立Python开发环境,并使用print输出
使用Python完成字符串的各种操作
使用Python re模块进行程序设计
使用Python创建文件、访问、删除文件
掌握import 语句、From…import 语句、From…import* 语句、方法的引用、Python中的包
能够使用Python面向对象方法开发软件
能够自己建立数据库,表,并进行基本数据库操作
掌握非关系数据库MongoDB的使用,掌握Redis开发
能够独立完成TCP/UDP服务端客户端软件开发,能够实现ftp、http服务器,开发邮件软件
能开发多进程、多线程软件
能够独立完成后端软件开发,深入理解Python开发后端的精髓
能够独立完成前端软件开发,并和后端结合,熟练掌握使用Python进行全站Web开发的技巧
能够使用Python熟练编写爬虫软件
能够熟练使用Python库进行数据分析
招聘网站Python招聘职位数据爬取分析
掌握使用Python开源人工智能框架进行人工智能软件开发、语音识别、人脸识别
掌握基本设计模式、常用算法
掌握软件工程、项目管理、项目文档、软件测试调优的基本方法
②Python软件开发进阶
③Python全栈式WEB工程师
④Python多领域开发
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,中博软件学院、南京课工场、南京北大青鸟等开设python专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
Ⅳ 请问怎么学习Python
这里整理了一份Python开发的学习路线,可按照这份大纲来安排学习计划~
第一阶段:专业核心基础
阶段目标:
1. 熟练掌握Python的开发环境与编程核心知识
2. 熟练运用Python面向对象知识进行程序开发
3. 对Python的核心库和组件有深入理解
4. 熟练应用SQL语句进行数据库常用操作
5. 熟练运用Linux操作系统命令及环境配置
6. 熟练使用MySQL,掌握数据库高级操作
7. 能综合运用所学知识完成项目
知识点:
Python编程基础、Python面向对象、Python高级进阶、MySQL数据库、Linux操作系统。
1、Python编程基础,语法规则,函数与参数,数据类型,模块与包,文件IO,培养扎实的Python编程基本功,同时对Python核心对象和库的编程有熟练的运用。
2、Python面向对象,核心对象,异常处理,多线程,网络编程,深入理解面向对象编程,异常处理机制,多线程原理,网络协议知识,并熟练运用于项目中。
3、类的原理,MetaClass,下划线的特殊方法,递归,魔术方法,反射,迭代器,装饰器,UnitTest,Mock。深入理解面向对象底层原理,掌握Python开发高级进阶技术,理解单元测试技术。
4、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,PDBC,深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为Python后台开发打下坚实基础。
5、Linux安装配置,文件目录操作,VI命令,管理,用户与权限,环境配置,Docker,Shell编程Linux作为一个主流的服务器操作系统,是每一个开发工程师必须掌握的重点技术,并且能够熟练运用。
第二阶段:PythonWEB开发
阶段目标:
1. 熟练掌握Web前端开发技术,HTML,CSS,JavaScript及前端框架
2. 深入理解Web系统中的前后端交互过程与通信协议
3. 熟练运用Web前端和Django和Flask等主流框架完成Web系统开发
4. 深入理解网络协议,分布式,PDBC,AJAX,JSON等知识
5. 能够运用所学知识开发一个MiniWeb框架,掌握框架实现原理
6. 使用Web开发框架实现贯穿项目
知识点:
Web前端编程、Web前端高级、Django开发框架、Flask开发框架、Web开发项目实战。
1、Web页面元素,布局,CSS样式,盒模型,JavaScript,JQuery与Bootstrap掌握前端开发技术,掌握JQuery与BootStrap前端开发框架,完成页面布局与美化。
2、前端开发框架Vue,JSON数据,网络通信协议,Web服务器与前端交互熟练使用Vue框架,深入理解HTTP网络协议,熟练使用Swagger,AJAX技术实现前后端交互。
3、自定义Web开发框架,Django框架的基本使用,Model属性及后端配置,Cookie与Session,模板Templates,ORM数据模型,Redis二级缓存,RESTful,MVC模型掌握Django框架常用API,整合前端技术,开发完整的WEB系统和框架。
4、Flask安装配置,App对象的初始化和配置,视图函数的路由,Request对象,Abort函数,自定义错误,视图函数的返回值,Flask上下文和请求钩子,模板,数据库扩展包Flask-Sqlalchemy,数据库迁移扩展包Flask-Migrate,邮件扩展包Flask-Mail。掌握Flask框架的常用API,与Django框架的异同,并能独立开发完整的WEB系统开发。
第三阶段:爬虫与数据分析
阶段目标:
1. 熟练掌握爬虫运行原理及常见网络抓包工具使用,能够对HTTP及HTTPS协议进行抓包分析
2. 熟练掌握各种常见的网页结构解析库对抓取结果进行解析和提取
3. 熟练掌握各种常见反爬机制及应对策略,能够针对常见的反爬措施进行处理
4. 熟练使用商业爬虫框架Scrapy编写大型网络爬虫进行分布式内容爬取
5. 熟练掌握数据分析相关概念及工作流程
6. 熟练掌握主流数据分析工具Numpy、Pandas和Matplotlib的使用
7. 熟练掌握数据清洗、整理、格式转换、数据分析报告编写
8. 能够综合利用爬虫爬取豆瓣网电影评论数据并完成数据分析全流程项目实战
知识点:
网络爬虫开发、数据分析之Numpy、数据分析之Pandas。
1、爬虫页面爬取原理、爬取流程、页面解析工具LXML,Beautifulfoup,正则表达式,代理池编写和架构、常见反爬措施及解决方案、爬虫框架结构、商业爬虫框架Scrapy,基于对爬虫爬取原理、网站数据爬取流程及网络协议的分析和了解,掌握网页解析工具的使用,能够灵活应对大部分网站的反爬策略,具备独立完成爬虫框架的编写能力和熟练应用大型商业爬虫框架编写分布式爬虫的能力。
2、Numpy中的ndarray数据结构特点、numpy所支持的数据类型、自带的数组创建方法、算术运算符、矩阵积、自增和自减、通用函数和聚合函数、切片索引、ndarray的向量化和广播机制,熟悉数据分析三大利器之一Numpy的常见使用,熟悉ndarray数据结构的特点和常见操作,掌握针对不同维度的ndarray数组的分片、索引、矩阵运算等操作。
3、Pandas里面的三大数据结构,包括Dataframe、Series和Index对象的基本概念和使用,索引对象的更换及删除索引、算术和数据对齐方法,数据清洗和数据规整、结构转换,熟悉数据分析三大利器之一Pandas的常见使用,熟悉Pandas中三大数据对象的使用方法,能够使用Pandas完成数据分析中最重要的数据清洗、格式转换和数据规整工作、Pandas对文件的读取和操作方法。
4、matplotlib三层结构体系、各种常见图表类型折线图、柱状图、堆积柱状图、饼图的绘制、图例、文本、标线的添加、可视化文件的保存,熟悉数据分析三大利器之一Matplotlib的常见使用,熟悉Matplotlib的三层结构,能够熟练使用Matplotlib绘制各种常见的数据分析图表。能够综合利用课程中所讲的各种数据分析和可视化工具完成股票市场数据分析和预测、共享单车用户群里数据分析、全球幸福指数数据分析等项目的全程实战。
第四阶段:机器学习与人工智能
阶段目标:
1. 理解机器学习相关的基本概念及系统处理流程
2. 能够熟练应用各种常见的机器学习模型解决监督学习和非监督学习训练和测试问题,解决回归、分类问题
3. 熟练掌握常见的分类算法和回归算法模型,如KNN、决策树、随机森林、K-Means等
4. 掌握卷积神经网络对图像识别、自然语言识别问题的处理方式,熟悉深度学习框架TF里面的张量、会话、梯度优化模型等
5. 掌握深度学习卷积神经网络运行机制,能够自定义卷积层、池化层、FC层完成图像识别、手写字体识别、验证码识别等常规深度学习实战项目
知识点:
1、机器学习常见算法、sklearn数据集的使用、字典特征抽取、文本特征抽取、归一化、标准化、数据主成分分析PCA、KNN算法、决策树模型、随机森林、线性回归及逻辑回归模型和算法。熟悉机器学习相关基础概念,熟练掌握机器学习基本工作流程,熟悉特征工程、能够使用各种常见机器学习算法模型解决分类、回归、聚类等问题。
2、Tensorflow相关的基本概念,TF数据流图、会话、张量、tensorboard可视化、张量修改、TF文件读取、tensorflow playround使用、神经网络结构、卷积计算、激活函数计算、池化层设计,掌握机器学习和深度学习之前的区别和练习,熟练掌握深度学习基本工作流程,熟练掌握神经网络的结构层次及特点,掌握张量、图结构、OP对象等的使用,熟悉输入层、卷积层、池化层和全连接层的设计,完成验证码识别、图像识别、手写输入识别等常见深度学习项目全程实战。