Python

TensorFlow学习笔记–Deep Dream模型

零、目标 Deep Dream是谷歌推出的一个有意思的技术。在训练好的CNN上,设定几个参数就可以生成一张图象。具体目标是: 了解Deep Dream基本原理 掌握实现生成Deep Dream 模型 一、技术原理 在卷积网络中,通常输入的是一张图象,经过若干层的卷积运算,最终输出图像的类别。这期间使用到了图片计算梯度,网络根据梯度不断的调整和学习最佳的参数。但是卷积层究竟学习到了什么,卷积层的参数代表了什么,浅层卷积和深层卷积学习到的内容有哪些区别,这些问题Deep Dream可以解答。 假设输入网络的图像为X,网络输出的各个类别的概率为t(t是一个多维向量,代表了多种类别的概率)。设定t[N]为优化目标,不断的让神经网络去调整输入图像X的像素值,让输出t[N]尽可能的大,最后极大化第N类别的概率得到图片。 关于卷积层究竟学到了什么,只需要最大化卷积层的某一个通道数据就可以了。折输入的图像为X,中间某个卷积层的输出是Y,Y的形状是hwc,其中h为Y的高度,w为Y的宽度,c为通道数。卷积的一个通道就可以代表一种学习到的信息。以某一个通道的平均值作为优化目标,就可以弄清楚这个通道究竟学习到了什么,这也是Deep Dream的基本原理。 二、在TensorFlow中使用 导入Inception模型 原始的Deep Dream 模型只需要优化ImageNet 模型卷积层某个通道的激活值就可以。因此,应该先导入ImageNet图像识别模型,这里以 Inception 为例。创建 load_inception.py 文件,输入如下代码: # 导入基本模块 import numpy as np import tensorflow as tf # 创建图和会话 graph = tf.Graph() sess = tf.InteractiveSession(graph=graph) # 导入Inception模型 # tensorflow_inception_graph.pb 文件存储了inception的网络结构和对应的数据 model_fn = 'tensorflow_inception_graph.pb' with tf.gfile.FastGFile(model_fn, 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) # 导入的时候需要给网络制定一个输入图像,因此定义一个t_input作为占位符 # 需要注意的是,使用的图像数据通常的格式为:(height,width,channel), # 其中height为图像的像素高度,width为图像的像素宽度,chaneel为图像的通道数,一般使用RGB图像,所以通道数为3 t_input = tf.placeholder(np.float32, name='input') imagenet_mean = 117.

HTTP和HTTPS的区别

HTTP是超文本传输协议,通俗的讲就是网络连接传输文本信息的协议,既然我们要上网就必须遵循HTTP协议,这就是为什么我们每次打开网页在网址前端都会出现HTTP字样。就如同你是“天地会”成员,你和其他天地会成员接头时,首先要说“地震高岗,一派山西千古秀!”和“门朝大海,三合河水万年流”这样的接头暗号,说出来才能和会友进行沟通。所以每次网页出现“HTTP://”就如何上面所讲的接头暗号,当暗号正确才能获得相关的信息。 HTTPS是安全超文本传输协议,是在HTTP协议基础上增加了使用SSL加密传送信息的协议,我们还是用天地会接头的例子来讲,大家可能觉得每次天地会都使用“地震高岗,一派西山千古秀”这类妇孺皆知的暗号,这样的组织没什么安全性可言,但是事实并不是如此,他们之间除了使用接头暗号外,可能还使用了“黑话”, 就是只有天地会成员才能听懂的黑话,这样即使交谈信息被泄露了,没有相关的解密的东西,大家谁也不知道这些黑话是什么?同意HTTPS就如同上面天地会的信息交谈一样,它也将自己需要传输的超文本协议通过SSL加密,让明文变成了“黑话”。 HTTPS和HTTP的区别 HTTPS协议需要到CA申请证书,一般免费的证书很少,需要交费 HTTP是超文本传输协议,信息时明文传输,HTTPS则是具有安全性的SSL加密传输协议 HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。HTTP使用的是80端口,HTTPS使用的是443端口 HTTP的连接很简单,是无状态的 HTTPS协议是由SSL+HTTP协议构建的,可进行加密传输、身份认证的网络协议,要比HTTP协议安全 HTTP是属于应用层,HTTPS加密是在传输层

[2018]Anaconda安装及配置

学习Python第一件是就是安装程序,对于初学者,有些坑总是要过的,我把自己学习过程中遇到过的问题 整理,供大家参考. 1.选择安装什么Python软件及版本 安装最新版Anaconda,里面有最新版的Python程序.好几个培训机构都使用的Anaconda.使用最受欢迎的软件准没错 最新版的Anaconda中Python应该是3.0以上的. Python3.0版向2.0版不兼容真的很好,只有这样才能最为一款最简洁的软件 2.路径配置 安装过程中有一步是否将Anaconda添加的环境变量中,建议勾选.如果不勾选,安装后需要自己添加环境变量,这又是一个坑 3.手动将Anaconda添加到环境变量 找到 控制面板→系统和安全→系统→高级系统设置→高级→环境变量→系统变量→Path 双击 将以下三个添加到Path中(win8系统) D:\Anaconda\D:\Anaconda D:\Anaconda\Scripts D:\Anaconda\Library\bin 4.修改打开jupyter notebook的浏览器 默认是IE浏览器,一般很难用,而且如果IE浏览器过低,jupyter notebook如法打开 找到jupyter_notebook_config.py文件. 一般在 c:/users/username/.jupyter目录下,用记事本打开 找到# c.NotebookApp.browser = ‘’’’ 代码 修改成如下格式: chrome浏览器 import webbrowser webbrowser.register(“chrome”,None,webbrowser.GenericBrowser(u”C:\ProgramFiles(x86)\Google\Chrome\Application\chrome.exe”)) c.NotebookApp.browser = ‘chrome’ 火狐浏览器 c.NotebookApp.browser = ‘Firefox’ import webbrowser webbrowser.register(“Firefox”, None, webbrowser.GenericBrowser(u”C:\Program Files\Mozilla Firefox\firefox.exe”)) 注意:删除前面#号,代码顶格 5.修改jupyter notebook中文件路径 原因:好找文件,文件显示简洁 同上,找到jupyter_notebook_config.py文件,用记事本打开 找到 #c.NotebookApp.notebook_dir = ‘’ 语句,删除#号 修改成 c.NotebookApp.notebook_dir =‘E:/python’ 表示文件在E盘的python文件夹下面

爬虫系列(四)–全站爬取

爬虫系列(四)–全站爬取 全站爬取需要的数据基于一个这样的假设:某网站的页面上存在该网站其他页面的连接,通过这些连接跳转的新的页面进行数据的爬取。在开始这个之前,要先明白栈和队列。本篇中介绍的是单线程的实现方式,大规模的爬取需要多线程,分布式爬取。 1.实现步骤 (1)准备几个起始链接加入待队列Q中,例如Q=[“http://www.xxx.com/aaa/”,”http://www.xxx.com/bbb/”,”http://www.xxx.com/ccc/”] (2)并将这几个链接加入一个入队集合S中,S={“http://www.xxx.com/aaa/”,”http://www.xxx.com/bbb/”,”http://www.xxx.com/ccc/”}这个集合作用是保证一个网页只爬取一次。 (3)从Q中取出一个链接url(出队,取出队首元素,并从队列中删除该元素),如果Q中没有链接,结束爬取。如果有链接url=”http://www.xxx.com/aaa/”,进行(4)步骤。 (4)对url爬取,保存需要的数据(写到文件中,建议使用json格式保存,一行一个页面),找出该页面上的所有链接urls (5)把符合我们要求的连接(例如以http://www.xxx.com 开头的链接)找出来,判断每一个连接urli是否在S中。如果不在S中,把urli加入S,urli入队 (6)继续执行(3)步骤 注意1:这个是广度优先爬取,如果把队换成栈,会变成深度优先爬取。如果没有特殊的需求,一般都是使用广度优先爬取。 注意2:对于一个小网站来说,这样操作没有什么问题,但是有些网站页面很多,Q和S中存储的连接太多直接撑爆内存,这时可以实现一个硬盘队列(栈)和硬盘集合,本系列文章不实现这些功能。 注意3:有些网站的连接到站内的url形如”/aaa?a=1&b=2″,需要改写成”http://域名/aaa?a=1&b=2″ 注意4:有些网站会根据短时间内一个ip访问大量页面制定反爬虫策略,可以爬取一个页面后,休眠一段时间接着爬取 2.代码实现(代码仅对于代码中要爬取的网站有效,其他网站需要重新配置规则) import time import os import json from urllib import request from lxml import etree header_dict = { "Accept":"application/json, text/javascript, */*; q=0.01", "Accept-Language":"zh-CN,zh;q=0.9", "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36", } def get_http(load_url,header=None): res="" try: req = request.Request(url=load_url,headers=header)#创建请求对象 coonect = request.urlopen(req)#打开该请求 byte_res = coonect.read()#读取所有数据,很暴力 try: res=byte_res.decode(encoding='utf-8') except: try: res=byte_res.decode(encoding='gbk') except: res="

python爬虫常用库和安装 — windows7环境

1:urllib python自带 2:re python自带 3:requests pip install requests 4:selenium 需要依赖chromedriver (selenium目前有版本限制:https://blog.csdn.net/qq_36625806/article/details/81463872) 下载地址:https://download.csdn.net/my 安装方式:解压后 python setup.py install –>>添加到环境变量path中 5:chromedriver 下载地址:https://download.csdn.net/download/qq_36625806/10589319 放到python安装目录中即可。 6:phantomjs 无界面浏览器,相当于一个网页控制台 下载地址:https://download.csdn.net/download/qq_36625806/10589328 将bin目录配置到环境变量的path中 7:xlml pip install lxml 或访问:https://pypi.python.org/pypi/lxml 下载 8:beautifulsoup pip install beautifulsoup4 (网页解析库,依赖xlml) 9:pyquery pip install pyquery (网页解析库,语法跟jquery完全一致) 官方api:https://pythonhosted.org/pyquery/api.html 10:pymysql pip install pymysql (操作mysql的库) 11:pymongo pip install pymongo (操作Mongodb数据库) 12:redis pip install redis (操作redis) 13:flask pip install flask (代理) 14:django pip install django (python前端框架) 官网:https://www.djangoproject.com 15:jupyter pip install jupyter (记事本,可以在线运行代码)

seaborn中有关机器学习的一些知识点笔记6

seaborn是python中一个可视化的图像处理库,是在matplotlib的基础上进行封装,提供丰富的模板,通过调用模板并传入参数实现画图。 1.整体布局风格:set_style:设置图表的样式 1.1.5种主题风格:暗网格(darkgrid),白网格(whitegrid),全黑(dark),全白(white),全刻度(ticks) 1.2.风格细节的设置:despine():可删除图表两边的边框 set_context():设置图表的线宽大小,里面的参数可进行细节的设置 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns def simplot(flip=1): x=np.linspace(0,14,100) for i in range(1,7): plt.plot(x,np.sin(x+i*.5)*(7-i)*flip) sns.set()#设置参数simplot() plt.show() #1.整体布局风格:set_style:设置图表的样式 #1.1.5种主题风格:暗网格(darkgrid),白网格(whitegrid),全黑(dark),全白(white),全刻度(ticks) sns.set_style("whitegrid")#设置主题样式 data=np.random.normal(size=(20,6))+np.arange(6)/2 sns.boxplot(data=data) #盒图 plt.show() #主题为全黑色 sns.set_style("dark")#将“dark”进行改变就能获得其他主题色 simplot() plt.show() #1.2风格细节的设置:用despine():可删除图表两边的边框 sns.violinplot(data)#图的类型,sns格式就是调用模板然后传入数据 sns.despine(offset=100,left=True )#**图的下端离X轴的距离,左边的轴消失,即删除边框** plt.show() #设置图表的线宽大小:set_context() sns.set_context("paper",re={"lines.linewidth":1.5})#“talk”,“poster”,“notebook”有这四种形式的表现方式,还可通过linewidth设置线宽 simplot() plt.show() 2.接下来是关于调色板方面的一些知识:其中有一点去掉图片的边框这在matplotlib中是无法实现的,但可以通过seaborn实现,sns.despine(left=True,right=True,top=True,bottom=True)#去掉图片的边框 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns #2.调色板(color_palette()能传入任何matplotlib所支持的颜色 #color_palette()不写参数默认颜色 #set_palette()设置所有图的颜色 #2.

我在部署ArcGIS API for Python时踩到的坑

ArcGIS API for Python相比于其他ESRI产品,还是很年轻。我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性。 今天回顾一下,做个总结吧。一方面自己备忘,另一方面希望能帮到同行的小伙伴。 看ESRI的官方文档,ArcGIS API for Python部署很简单呀: 1 安装Anaconda 2 python环境中安装Arcgis包 关于版本要求,ESRI的官方文档是这样写的: 我装了Anaconda3-4.4.0(内置Python3.6),然后在默认Python环境下“conda install -c esri arcgis”安装ArcGIS包。一切顺利。 然后用jupyter notebook 出来的结果是MapView(basemaps=[‘dark-gray’, ‘dark-gray-vector’, ‘gray’, ‘gray-vector’ ……没有出来地图! 打开浏览器的开发者模式,看抓包信息里面,没有去调瓦片。 问题原因:Python3.6环境不支持ArcGIS API for Python 1.4.2 解决办法:新建Python3.5环境(conda create -n agsenv python=3.5),在此环境下安装ArcGIS API for Python(conda install -c esri arcgis) 分析:可能是arcgis1.4.2出文档时python最新版本还是3.5的吧。ESRI以为以后的Python版本也不会有问题。而我也天真地相信了。 又过了几天,我在一台新电脑上部署环境。这次我特意下载了Anaconda3-4.2.0-Windows-x86_64(内置Python3.5)。装好了Anaconda,在默认base环境下安装Arcgis包。 装的过程中,会出现 ImportError: cannot import name ‘ensure_dir_exists‘ 这样的错误。 但是import arcgis还是正常的 所以没有管它。但是运行jupyter notebook报错: 网上找到解决问题的方法: conda update jupyter_core jupyter_client jupyter升级到了最新版本,jupyter notebook正常了。 但是arcgis好像还是不好使。 仅仅升级jupyter是不够的,(我理解是因为jupyter版本低的原因,arcgis向jupyter中添加mapview失败)。因此需要卸载掉Arcgis包,再重新安装。当然如果是先升级jupyter,再安装arcgis包,就不会有这个问题了。 conda uninstall esri arcgis

Python爬虫:网络信息爬取与处理知识梳理

HTTP协议 应用层协议 无状态:每次连接,传输都是独立的 无连接:每次连接只处理一个请求 HTTP请求 GET:没有request body POST: 有request body HTTP状态码 2xx:成功 3xx:跳转 4xx: 客户端错误 403 Forbidden 没有登录,或ip被封 5xx:服务端错误 python urllib2会自动302跳转 爬取策略 种子站点 深度优先 广度优先 去重策略 1、数据库unique字段存访问过的url 效率太低 2、hashset存访问过的url O(1) 消耗内存 3、md5计算访问过的url后保存到hashset或数据库 碰撞概率较小 4、bit-map,访问过的url的md5值再经过哈希函数映射到bitset某一位 碰撞概率较大 5、bloom filter 使用多个哈希函数,创建一个m位的bitset,先初始化所有位为0,然后选择k个不同的哈希函数,第i个哈希函数对字符串str哈希的结果记为h(i, str),且h(i, str)的范围是0 – m-1 评估网页数量 百度:site:www.mafengwo.cn google:site:www.mafengwo.cn/travel-scenic-spot pip install murmurhash3 bitarray pybloomfilter 安装以下两个组件之后依然安装失败 visualcppbuildtools_full.exe vc_redist.x64.exe http://www.mafengwo.cn/robots.txt Sitemap top-down pip install lxml 爬取工具 多线程:线程来回切换造成额外开销 多进程多ip,可以提高效率 数据库具有读写保护 分布式数据库 mongodb, redis, hbase 分布式爬虫 分布式系统 master – slave 主从模式

180709 利用Python与OpenCV裁剪图像做数据增强

原始图像 裁剪图像 # -*- coding: utf-8 -*- """ Created on Mon Jul 9 11:38:19 2018 @author: guokai_liu """ import numpy as np import matplotlib.pyplot as plt import cv2 filename = 'Yuna2.jpg' def crop_figure(fn,kw=100,kh=100,sx=50,sy=50): # assgn saving name sn = fn.split('.')[0] # read image img = cv2.imread(fn) # set parameters f_h, f_w,f_c = img.shape k_w = kw k_h = kh s_x = sx s_y = sy # get output numbers of rows and columns n_y = (f_h-k_w)//s_y n_x = (f_w-k_h)//s_x # begin points for rows and columns c_x = [i+s_x*i for i in range(n_x)] c_y = [i+s_y*i for i in range(n_y)] # crop images for idx_y, y in enumerate(c_y): for idx_x,x in enumerate(c_x): crop_img = img[y:y+k_h,x:x+k_w] cv2.

深度学习从看懂到看开(一)——————-Tensorflow的安装

Tensortflow 简介: TensorFlow是 谷歌基于DistBelief进行研发的第二代 人工智能 学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于 语音识别或 图像识别等多项机器学习和深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。 一:安装python3 本文的python版本都是python3的,python官方已经宣布在2020年全面停止对Python2的维护更新,所以我们要趁早熟悉并使用python3. 废话不多说,现在我们开始来在ubuntu下安装python3. 系统默认安装Python2 安装Python3的命令 sudo apt-get install python3.6 安装成功后在终端输入 python 如果出现如图所示即安装成功 二:安装anaconda anaconda指的是一个开源的 Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 [1] 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 515 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用 Miniconda这个较小的发行版(仅包含conda和 Python)。 安装了anaconda后可以不用再去网上找各种各样的科学技术包,直接调用anaconda的编译环境就好,方便以后我们使用tensorflow. 下载 官方下载地址: https://www.continuum.io/downloads 所有安装包地址: https://repo.continuum.io/archive/ 安装 安装较为简单,这里参考官方文档:https://docs.continuum.io/anaconda/install/linux.html 在终端中切换到你下载的anaconda文件目录下执行: bash +xxxxxxx(你所下载的anaconda版本).sh 根据提示输入回车 一直输入yes 然后一直回车,它会自动帮你加入到环境变量中和创建文件夹 当出现如下画面即安装完成: 验证annacoda是否安装完成 在终端中输入python出现如下即验证成功 三:安装tensorflow 直接在终端输入命令:pip3 install tensorflow (python3.x的版本,支持CPU) 等待安装jies 验证tensorflow是否安装成功 进入python命令下,测试tensorflow: import tensorflow as tf sess = tf.Session() hello=tf.constant(‘Hello,Tensorflow!’) print(sess.run(hello)) 出现: 即安装成功 四:Pycharm整合tensorflow环境 打开pycharm中的setting