django的使用2-模型

[TOC] 模型 模型准确且唯一的描述了数据。它包含您储存的数据的重要字段和行为。一般来说,每一个模型都映射一张数据库表。有如下几个点: 每个模型都是一个 Python 的类,这些类继承 django.db.models.Model 模型类的每个属性都相当于一个数据库的字段。 利用这些,Django 提供了一个自动生成访问数据库的 API; example 定义了一个 Person 模型,拥有 first_name 和 last_name: from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) first_name 和 last_name 是模型的 字段。每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。 上面的 Person 模型会创建一个如下的数据库表: CREATE TABLE myapp_person ( "id" serial NOT NULL PRIMARY KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL ); 该表的名称规则 myapp_person = app名称_class名称,可修改。 id 字段会被自动添加,可修改。 创建数据表的语法是根据配置文件setting.py中设置的数据类型来定。 字段类型 模型中每一个字段都应该是某个 Field 类的实例, Django 利用这些字段类来实现以下功能: ...

February 1, 2017

django的使用1-简介

[TOC] 简介 Django 是一个用python语言写的web开发框架,最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发。 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。 Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template Django安装与基本使用 Django安装 pip install django 创建项目 django-admin startproject your-project-name # example ----------------------------------------------------------- (dj) alex@Alex:~/github$ django-admin startproject my_project (dj) alex@Alex:~/github$ tree my_project my_project ├── manage.py └── my_project ├── asgi.py ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py 这些目录和文件的用处是: manage.py: 一个让你用各种方式管理 Django 项目的命令行工具 my_project/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 my_project/init.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。 my_project/settings.py:Django 项目的配置文件。 my_project/urls.py:Django 项目的 URL 声明,路由配置。 my_project/asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。 my_project/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。 创建应用 python manage.py startapp app01 # example ----------------------------------------------------------- (dj) alex@Alex:~/github$ cd my_project (dj) alex@Alex:~/github/my_project$ ls manage.py my_project (dj) alex@Alex:~/github/my_project$ python manage.py startapp app01 (dj) alex@Alex:~/github/my_project$ tree . ├── app01 │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── manage.py └── my_project ├── asgi.py ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py 启动项目 python manage.py runserver # example ----------------------------------------------------------- (dj) alex@Alex:~/github/my_project$ python manage.py runserver Watching for file changes with StatReloader Performing system checks... Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 这里省略了host 和port的设置。python manage.py runserver 0.0.0.0:8000 ...

January 30, 2017

Python线程、进程和协程详解

[TOC] Python被人诟病最多的大概就是性能差,在这里讲一下 Python 的多进程,多线程与协程。首先声明这不是教程,看完这篇文章,大概能够对 Python 的多进程与多线程有一定的了解。 解释器环境:python3.5.1 我们都知道python网络编程的两大必学模块socket和socketserver,其中的socketserver是一个支持IO多路复用和多线程、多进程的模块。一般我们在socketserver服务端代码中都会写这么一句: server = socketserver.ThreadingTCPServer(settings.IP_PORT, MyServer) ThreadingTCPServer这个类是一个支持多线程和TCP协议的socketserver,它的继承关系是这样的: class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass 右边的TCPServer实际上是它主要的功能父类,而左边的ThreadingMixIn则是实现了多线程的类,它自己本身则没有任何代码。 MixIn在python的类命名中,很常见,一般被称为“混入”,戏称“乱入”,通常为了某种重要功能被子类继承。 class ThreadingMixIn: daemon_threads = False def process_request_thread(self, request, client_address): try: self.finish_request(request, client_address) self.shutdown_request(request) except: self.handle_error(request, client_address) self.shutdown_request(request) def process_request(self, request, client_address): t = threading.Thread(target = self.process_request_thread, args = (request, client_address)) t.daemon = self.daemon_threads t.start() 在ThreadingMixIn类中,其实就定义了一个属性,两个方法。在process_request方法中实际调用的正是python内置的多线程模块threading。这个模块是python中所有多线程的基础,socketserver本质上也是利用了这个模块。 一、线程 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不独立拥有系统资源,但它可与同属一个进程的其它线程共享该进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个应用程序都至少有一个进程和一个线程。线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的被划分成一块一块的工作,称为多线程。 以上那一段,可以不用看!举个例子,厂家要生产某个产品,在它的生产基地建设了很多厂房,每个厂房内又有多条流水生产线。所有厂房配合将整个产品生产出来,某个厂房内的所有流水线将这个厂房负责的产品部分生产出来。每个厂房拥有自己的材料库,厂房内的生产线共享这些材料。而每一个厂家要实现生产必须拥有至少一个厂房一条生产线。那么这个厂家就是某个应用程序;每个厂房就是一个进程;每条生产线都是一个线程。 1.1 普通的多线程 在python中,threading模块提供线程的功能。通过它,我们可以轻易的在进程中创建多个线程。下面是个例子: import threading import time def show(arg): time.sleep(1) print('thread'+str(arg)) for i in range(10): t = threading.Thread(target=show, args=(i,)) t.start() print('main thread stop') 上述代码创建了10个“前台”线程,然后控制器就交给了CPU,CPU根据指定算法进行调度,分片执行指令。 下面是Thread类的主要方法: start 线程准备就绪,等待CPU调度 setName 为线程设置名称 getName 获取线程名称 setDaemon 设置为后台线程或前台线程(默认) 如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止。如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止。 join 逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义。 run 线程被cpu调度后自动执行线程对象的run方法 ...

October 3, 2016

pycharm profession active

[TOC] profession的版本要比免费版多些功能,这里就不多介绍了,自己看官方. 1.授权服务器(License Server URLS): http://idea.imsxm.com **使用方法:**激活时选择License server 填入http://idea.imsxm.com 点击Active即可 。 how-to-active: when active,type the url in License server address input box,and then press the Active button:) 2.local proxy 如果第一种方法被拌掉了,那么下载这个实现本地proxy代理 [idea_active_proxy.exe] open it and use http://localhost:8888 to active JB.when done,you can close it. 意思就是下载这个idea_active_proxy.exe,实现反向代理,然后把http://idea.imsxm.com 换成 http://localhost:8888 即可。 这样在新建项目的时候就可以看到除了pure Python意外的其他项目了。 这种方法还是有点不好,那就是每次你运行pycharm的时候都要先运行这个idea_active_proxy.exe 3.localhost 第三种就更好了. 首先在你的host文件中添加 0.0.0.0 account.jetbrains.com 然后就是打开pycharm,在那个激活页面选择 Activation code 复制通用注册码,激活即可. EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In1dLCJoYXNoIjoiNjk0NDAzMi8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-Gbb7jeR8JWOVxdUFaXfJzVU/O7c7xHQyaidCnhYLp7v32zdeXiHUU7vlrrm5y9ZX0lmQk3plCCsW+phrC9gGAPd6WDKhkal10qVNg0larCR2tQ3u8jfv1t2JAvWrMOJfFG9kKsJuw1P4TozZ/E7Qvj1cupf/rldhoOmaXMyABxNN1af1RV3bVhe4FFZe0p7xlIJF/ctZkFK62HYmh8V3AyhUNTzrvK2k+t/tlDJz2LnW7nYttBLHld8LabPlEEjpTHswhzlthzhVqALIgvF0uNbIJ5Uwpb7NqR4U/2ob0Z+FIcRpFUIAHEAw+RLGwkCge5DyZKfx+RoRJ/In4q/UpA==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==

September 22, 2016

git常见问题

[TOC] 1.git删除文件 当我们想要删除某个文件,直接删除是没有用的. [root@vultr hexo]# git status # On branch master nothing to commit (working directory clean) [root@vultr hexo]# rm source/_posts/test.txt rm: remove regular empty file `source/_posts/test.txt'? y [root@vultr hexo]# git status # On branch master # Changed but not updated: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: source/_posts/test.txt # no changes added to commit (use "git add" and/or "git commit -a") [root@vultr hexo]# git add . [root@vultr hexo]# git commit -m "delete test file " # On branch master # Changed but not updated: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: source/_posts/test.txt # no changes added to commit (use "git add" and/or "git commit -a") 直接使用rm 删除的仅仅是工作区的文件,并没有删除暂存区,所以commit 不会生效. 由于平时使用基本都是修改或者增加新文件,大家习惯用 git add 命令,而忽略了 git rm , 其实在git status 都有提示,仔细看看就知道了. ...

August 26, 2016

Gitlab CI

[TOC] GitLab CI CD 持续集成(Continuous Integration) , 合并存储库中的更改之前触发管道来构建,测试和验证新代码。就是先测试和验证代码,然后再合并。 持续交付(Continuous Delivery) 将CI验证的代码交付给您的应用程序。就是将合并的代码更新部署到线上。 CI/CD的优点: 持续集成 尽快发现错误: 在开发人员重新思考的同时解决问题 减少集成问题: 更小的问题更容易消化 避免复杂的问题: 使团队更加自信地发展更快 持续交付 确保每个更改都是可发布的: 在完成之前测试所有内容,包括部署 降低每次发布的风险: 使发布简单 更加频繁地交付价值: 可靠的部署意味着更多的发布 紧密的客户反馈循环: 快速而频繁的客户对变更的反馈 参考:https://about.gitlab.com/product/continuous-integration/ GitLab Runner GitLab Runner 是一个处理构建的应用程序。它可以单独部署,并通过API与GitLab CI / CD一起使用。为了让你提交的代码自动执行构建,测试和部署等功能,你需要有一个可以执行构建测试和部署的服务,Gitlab Runner就是这么一个服务。 install 添加官方的安装源 # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # For RHEL/CentOS/Fedora curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash 安装gitlab-runner # For Debian/Ubuntu/Mint sudo apt-get install gitlab-runner # For RHEL/CentOS/Fedora sudo yum install gitlab-runner 修改配置,链接到Gitlab Run the following command: sudo gitlab-runner register Enter your GitLab instance URL: Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ) https://gitlab.com Enter the token you obtained to register the Runner: Please enter the gitlab-ci token for this runner xxx Enter a description for the Runner, you can change this later in GitLab’s UI: Please enter the gitlab-ci description for this runner [hostname] my-runner Enter the tags associated with the Runner, you can change this later in GitLab’s UI: Please enter the gitlab-ci tags for this runner (comma separated): my-tag,another-tag Enter the Runner executor: Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell: docker If you chose Docker as your executor, you’ll be asked for the default image to be used for projects that do not define one in .gitlab-ci.yml: Please enter the Docker image (eg. ruby:2.1): alpine:latest 参考: ...

July 22, 2016

在gitlab上搭建hexo博客

[TOC] 这篇文章讲解怎样用hexo把你写的Markdown快速搭建成博客(呐,你正在看的这篇博客呢就是一个Markdown写出来的 ^_^ )。 hexo 1.什么是hexo? Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 2.安装前提 安装 Hexo 相当简单。然而在安装前,您必须检查电脑中是否已安装下列应用程序: Node.js Git 3.安装 就是这么简单! 4.使用 简单三部曲: hexo init blog cd blog && npm install hexo server # 1.初始化一个hexo 取名blog # 2.进入blog 构建要用到的模块包 # 3.启动服务, 打开浏览器输入:127.0.0.1:3000 看看吧 就这样,你没有写任何文档这个博客也就起来了。 这个初始化的hexo下面,目录结构URU型下: . ├── _config.yml #配置信息 ├── package.json #应用程序的信息,npm install就是安装这些应用,生成node_modules目录 ├── scaffolds ├── source | ├── _drafts | └── _posts #资源文件 └── themes #主题 如果你想要把你的Markdown内容放入这个博客,简单,将你写的Markdown放入blog/source/_post 目录中即可。 5.生成器 上面的 hexo server 只是在你的本地主机上运行了一个临时的博客,方便你看效果,如果没有问题那你就把他生成静态文件,放到任何地方做成博客啦。那在生成静态文件的时候,有一些配置需要配好。 ...

July 17, 2016

keras回调函数Callbacks

[TOC] 回调函数使用 回调函数是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递一个列表的回调函数(作为 callbacks 关键字参数)到 Sequential或 Model 类型的 .fit() 方法。在训练时,相应的回调函数的方法就会在各自的阶段被调用。 Callback keras.callbacks.Callback() 用来组建新的回调函数的抽象基类。 BaseLogger keras.callbacks.BaseLogger() 会积累训练轮平均评估的回调函数。 这个回调函数被自动应用到每一个 Keras 模型上面。 TerminateOnNaN keras.callbacks.TerminateOnNaN() 当遇到 NaN 损失会停止训练的回调函数。 ProgbarLogger keras.callbacks.ProgbarLogger(count_mode='samples') 会把评估以标准输出打印的回调函数。 参数 count_mode: “steps” 或者 “samples”。 进度条是否应该计数看见的样本或步骤(批量)。 触发 ValueError: 防止不正确的 count_mode History keras.callbacks.History() 把所有事件都记录到 History 对象的回调函数。 这个回调函数被自动启用到每一个 Keras 模型。History 对象会被模型的 fit 方法返回。 ModelCheckpoint keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1) 在每个训练期之后保存模型。 filepath 可以包括命名格式选项,可以由 epoch 的值和 logs 的键(由 on_epoch_end 参数传递)来填充。 例如:如果 filepath 是 weights.{epoch:02d}-{val_loss:.2f}.hdf5, 那么模型被保存的的文件名就会有训练轮数和验证损失。 EarlyStopping keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto') 当被监测的数量不再提升,则停止训练。 ...

July 16, 2016

gitlab-pages配置说明

[TOC] pages 介绍 gitlab-pages是gitlab-ci的一个功能. 它上传静态页面文件到gitlab中, gitlab就使用这些静态页面作为网站展示出来. gitlab-pages 功能: Create websites for your GitLab projects, groups, or user account. # 为你的gitlab项目搭建网站 Use any static website generator: Jekyll, Middleman, Hexo, Hugo, Pelican, and more. # 可以使用各种网站静态生成器 Connect your custom domain(s) and TLS certificates. # 自定义域名 以及支持TLS证书安全保证 Host your static websites on GitLab.com for free, or on your own GitLab instance. # 你的网站可以免费放到gitlab上 pages 配置 搭建pages必须满足两个条件 所有的静态内容必须放到public 目录下 .gitlab-ci.yml 文件必须配置 artifacts 选项的paths 参数为public ...

July 15, 2016

keras图像预处理

[TOC] class: ImageDataGenerator 生成批次的带实时数据增益的张量图像数据。数据将按批次无限循环。 keras.preprocessing.image.ImageDataGenerator(featurewise_center=False, samplewise_center=False, featurewise_std_normalization=False, samplewise_std_normalization=False, zca_whitening=False, zca_epsilon=1e-6, rotation_range=0., width_shift_range=0., height_shift_range=0., shear_range=0., zoom_range=0., channel_shift_range=0., fill_mode='nearest', cval=0., horizontal_flip=False, vertical_flip=False, rescale=None, preprocessing_function=None, data_format=K.image_data_format()) 常用参数: rotation_range: 整数。随机旋转的度数范围。 width_shift_range: 浮点数(总宽度的比例)。随机水平移动的范围。 height_shift_range: 浮点数(总高度的比例)。随机垂直移动的范围。 shear_range: 浮点数。剪切强度(以弧度逆时针方向剪切角度)。 zoom_range: 浮点数 或 [lower, upper]。随机缩放范围。如果是浮点数,[lower, upper] = [1-zoom_range, 1+zoom_range]。 channel_shift_range: 浮点数。随机通道转换的范围。 fill_mode: {"constant", "nearest", "reflect" or "wrap"} 之一。输入边界以外的点根据给定的模式填充: "constant": kkkkkkkk|abcd|kkkkkkkk (cval=k) "nearest": aaaaaaaa|abcd|dddddddd "reflect": abcddcba|abcd|dcbaabcd "wrap": abcdabcd|abcd|abcdabcd cval: 浮点数或整数。当 fill_mode = "constant" 时,用于边界之外的点的值。 horizontal_flip: 布尔值。随机水平翻转。 vertical_flip: 布尔值。随机垂直翻转。 rescale: 重缩放因子。默认为 None。如果是 None 或 0,不进行缩放,否则将数据乘以所提供的值(在应用任何其他转换之前)。 类的方法 类的方法我就用了两个:flow 和flow_from_directory ...

July 15, 2016