Selenium使用流程
序章
遇事不决直接Selenium!
优点是泛用性强,缺点是慢,非常慢。
最后还是通过分析接口解决的,很多接口只是一个规则,注意观察
准备
安装selenium
下载对应Chrome版本的Driver
初始化模板
12345678910111213141516from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.chrome.options import Optionsimport time,os,shutilfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC options = Options() #warnings.simplefi ...
Rabbitmq部署流程
主要用来做多进程、分布式。
使用一对多,一生产者,多消费者。
Intall
先安装erlang环境,主要erlang需要和Rabbitmq版本进行对应。
pip install pika
需要新建账户,guest账户是不难用来连接的。
Send
123456789101112131415161718192021222324252627import pika,jsonimport pandas as pd# 建立socket连接credentials = pika.PlainCredentials("root", "root")#connection = pika.BlockingConnection(pika.ConnectionParameters("127.0.0.1", credentials=credentials))connection = pika.BlockingConnection(pika.ConnectionParameters( host='10.147.17.42& ...
分子生成(二)|ChemistGA:一种多目标可合成全新药物设计方法
本文介绍一篇来自浙江大学侯廷军教授和谢昌谕教授课题组、武汉大学陈曦课题组、中南大学曹东升教授课题组和碳硅智慧联合发表的论文。该论文提出了一种全新的生成特定性质的可合成分子生成新方法ChemistGA,该算法将传统的启发式算法与深度学习算法相结合,使用基于Transformer的反应预测算法作为遗传算法杂交的核心,并且加入回交操作,不仅保留了传统遗传算法的优势,而且极大地提高了生成拥有期望特性分子的比例与可合成性。实验结果表明,ChemistGA取得了优异的表现,它为生成模型在真实药物发现场景中的应用开辟了一条新途径。
img
研究背景
新药研发是一项周期长、投入高、风险大的复杂系统工程。先导化合物的发现与优化在新药研发过程中至关重要,高质量的先导化合物能够有效缩短药物探索的时间,提高成药的可能性。在先导化合物的设计过程中,要综合考虑候选分子的生物活性、结构新颖性、靶点选择性、成药性和安全性等特性,这些性质与后续的结构修饰和优化、生物学活性评价以及临床试验密切相关。据估计,目前可开采的化学空间约为1023至1060,如何从如此庞大的化学空间中智能地发现或生成高质量的先导 ...
机器学习竞赛实录
o2o优惠券使用预测
本赛题提供用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为,预测用户在2016年7月领取优惠券后15天以内的使用情况。
数据分析
数据分为线上和线下,需要合并。
经过观察,线下数据比线下数据多了距离字段,设置线上距离为0,合并。
特征工程
CSV提供了基本特征
将数据分为几个实体
用户特征
商家特征
用户—商家交互特征
优惠劵相关的特征
穿越特征( Leakage)
对于使用过去以及当下信息来预测未来的AI算法模型,特征穿越本质上是,特征中包含了未来的信息。
特征穿越的例子
以电商推荐系统为例,对于一条用户A于9:00时发生的行为记录(训练样本),只能使用9:00之前的信息构建特征(例如过去购买、点击、分享的商品,以及用户的一些属性,包括所在城市、性别等),来训练模型。
若使用了9:00之后的信息来构建特征,则会触发典型的特征时间穿越问题,因为特征中包含了未来的信息,这些信息极有可能隐含与标签(Label,即模型预测目标)相关的内容。
通过存在特征穿越的数据集训练的模型,部署上 ...
分子生成(一) REINVENT:使用强化学习生成模型产生新的分子
在药物设计、化学信息学领域,深度学习并不一定能比传统机器学习领域有更好的表现,尤其是在学术界,由于有标签的数据很少,数据噪音较大,往往用深度学习只会导致过拟合降低模型的预测能力。但是,生成学习用于药物设计却完全发挥了当前深度神经网络的优势。虽然有标签的数据很少,但是药物设计数据库诸如CHEMBL不乏质量较高的“化合物信息”。这里说的质量较高指的是他们的类药性较强,往往此类数据库中的化合物都是早期药物设计中已经合成出且具有一定生物活性的分子。这些化合物可以统统拿来构建一个模型用于生成新的小分子。
另一方面,深度学习所推崇的”原始数据”,对于图形数据,序列数据的处理能力远远大于传统的机器学习方法,从而解决了传统方法用分子描述符和分子指纹描述分子并不能得到分子结构本身。现在有了深度学习,一切从分子本身(比如分子的
SMILES)进行训练,生成新的SMILE即得到小分子的结构。
RNN生成模型
生成模型的架构主要是循环神经网络 (RNN),从下图可以看出,在一个 RNN
模型里,最初的输入是“GO”,接下来每个输入都是上个单元期待的输出,最终输出是“EOS”。比如一个乙醇分子
CC ...
LBPH人脸识别
LBPH
基本原理是将像素点A的值与其最临近的8个像素点的值逐个比较:
如何A大于其临近点的像素值,则得到0
如何A小于其临近点的像素值,则得到1
最后,将所得到的8个0或1连起来。得到一个8位的二进制序列。将该二进制序列转换为十进制作为A的LBP值。
这里举个例子:
lbph 的图像结果
对图像逐个像素进行处理,就会得到LBP特征图像。这个特征图像的直方图被称为LBPH,或称为LBP直方图。
为了得到不同尺度下的纹理结构,还可以用圆形领域将计算扩大到任意大小的领域内。圆形领域用(P,R)表示。P表示参与的像素点个数,R表示邻域的半径。
人脸的整体灰度由于收到光线的作用,经常会发生变化,但是人脸各部分的相对灰度会基本保持一致。LBP的主要思想是以当前点与其领域像素的相对关系作为处理结果,因此在图像灰度整体发生变化时(单调变化),从LBP算法中提取的特征值能保持不变。
人脸识别流程
使用OpenCV中进行人脸识别时,LBPH会在图像中构建不重叠区域,在每个区域内构建灰度直方图特征,最后拼接构成人脸图像的整体特征,进而进行对比识别。具体流程如下:
...
百问深度学习模型训练
有哪些学习率调节策略?
OneCycleLR
Warmup+Cos
1234567891011121314151617181920212223242526import cv2import torch.nn as nnimport torchfrom torchvision.models import AlexNetimport matplotlib.pyplot as pltsteps = []lrs = []model = AlexNet(num_classes=2)lr = 0.1optimizer = torch.optim.SGD(model.parameters(), lr=lr, momentum=0.9)scheduler =torch.optim.lr_scheduler.OneCycleLR(optimizer,max_lr=0.9,total_steps=10*2, verbose=True)#total_steps:总的batch数,这个参数设置后就不用设置epochs和steps_per_epoch,anneal_strategy 默认是"cos ...
NAS学习笔记(三)FariNAS
引入
FairNAS 的方法是对 NAS 界 One-Shot 派的继承和发扬。One-Shot 派由
Google Brain 创立,主张权重可共享,从头到尾训练一个超网
(只完整训练一个超网,这也是 One-shot
的命名之义),每个模型是超网的一次采样子模型。这样做的好处是不需要将每个模型进行耗时的训练才知道其表征能力,因此以大幅提升
NAS 的效率著称,目前已成为 NAS 的主流。
但 One-Shot
的前提是假定权重共享是有效的,并且模型能力能够通过这种方式快速及准确的验证。要评估模型能力,就好像给一个班的同学考一场试,用明确的考分来决定谁学习不错,谁学习还薄弱一些,虽然不能完全展示每个学生的能力和优势,但总得需要放在同一个尺度上考量。
目前 NAS
评定模型能力的方式,就好比给各个模型一道相同的考题,考的好的就是好模型,不好的就是差模型。但往往有情况是差模型底子并不差,只是训练不得当,所以结果比较差。或者训练不充分,结果比较差。
这种情况就有点像马太效应,家庭条件好的一代比一代强,条件不好的反而陷入循环困境。所以在训练过程中,给予相同的机会和条件来提 ...
NAS学习笔记(二)NASBench101
0. 摘要
神经网络搜索近年来取得进步巨大,但是由于其需要巨大的计算资源,导致很难去复现实验。本文目标是通过引入NAS-Bench-101的方法来缓解以上问题。在NAS-Bench-101中,设计了一个紧凑且丰富的搜索空间。通过图同构的方式来区别423k个网络架构。
在CIFAR10数据集上多次训练以上所有网络,并得到验证集上的结果。这使得研究人员可以通过查询预先计算的数据集,以毫秒为单位评估各种模型的质量。通过分析数据集作为一个整体,并通过对一系列架构优化算法进行基准测试来证明它的实用性。
1. 介绍
简单来说,NAS-Bench-101就是谷歌设计了一个搜索空间,在搜索空间中穷尽枚举了大约5百万个子网络。在CIFAR10数据集上进行训练,在验证集上测试。将子网的结构以及对应的验证集精度记录下来,形成一个表,研究人员使用的时候只需要通过查表就可以得到对应的验证集精度,这样就不需要重新训练和测试,降低了对计算资源的依赖。
为了摸清这篇工作内容,我们需要搞清楚几个关键点:
搜索空间,如何设计搜索空间的?
训练策略,采用了什么训练策略?
使用方法,研究人员如何使用NAS ...
NAS学习笔记(一)GreedyNAS
引言
商汤在 CVPR 2020 上提出了 GreedyNAS,它也是一种 One-Shot
NAS,优点是对 supernet 做了贪心操作,本文对它做简单的笔记。
1. Motivation
我们知道在 One-Shot 模型里,supernet
的训练质量是至关重要的,因为在搜索的时候采样的 child architecture
不会再训练,直接 infer。我们之前介绍过的 Single Path One-Shot 和
FairNAS 方法都是尽可能的想让 sueprnet 训练时对每个采样都公平点,将
supernet 中每一个 architecture 认为 是同等重要的,supernet
应该对每个结构进行准确评估或相对排序。然而
supernet中所包含的搜索空间的是非常巨大的,想要准确的评估对于 supernet
来说是非常困难的,会导致 supernet
中结构的表现与其真实表现相关性很差,要求 supernet
正确预测所有路径准确率过于严苛。并且由于训练超网过程中所有路径高度共享,训练不好的路径可能对好的路径造成干扰。
因 ...