日記

2019.3.11:前端

h-crystal:
    NetWork = Grid
    Not, Link

Batch Normalization 批標準化:
    分層數據統一


torch.tensor:
    Tensor代替numpy中的數組
     多維矩陣
    默認 -- torch.FloatTensor


pytorch 實現機器學習步驟:
    模塊引入
    數據準備
    展現部分數據
    訓練模型
    測試訓練結果
    加載預訓練模型訓練--版本1
    加載預訓練模型訓練--版本2

Variable:
    將Tensor封裝了一下,並增長了新的功能
    將Variable類型的數據轉化爲Tensor類型的數據: variable.data
    計算變量的梯度使用 .backward()函數

神經網絡:
    torch.nn包用來構建神經網絡
    nn包調用autograd包實現神經網絡定義、梯度計算
    nn.Module類包含了神經網絡各層的定義,以及forward(input)前向傳播函數的定義,返回輸出值output

對於神經網絡的典型處理:
    

定義待可學習參數的網絡結構;

    數據集輸入;

    對輸入進行處理,主要體如今網絡的前向傳播;
    
計算loss function;
    
反向傳播求梯度;
    
根據梯度改變參數值,最簡單的實現方式爲:

        weight = weight - learning_rate * gradient



Conv2d:
    pytorch 中二維卷積層接口

Linear:
    pytorch 中線性迴歸函數接口

nn.ReLU做爲一個層結構,必須添加到nn.Module容器中才能使用,而F.ReLU則做爲一個函數調用

爲何須要非線性的激活函數呢?
    只是將兩個或多個線性網絡層疊加,並不能學習一個新的東西

經過激活函數的加入能夠學到非線性的關係

經常使用的激活函數有:
    Sigmoid:
        優勢:
            是便於求導的平滑函數;
            能壓縮數據,保證數據幅度不會趨於正無窮或負無窮
        缺點:
            


容易出現梯度消失(gradient  vanishing)的現象;



            Sigmoid的輸出均值不是0(zero-centered)的;



            指數運算相對耗時


    Tanh:
        解決了sigmoid函數non-zero問題。但與sigmoid相同的是也存在梯度消失和指數運算的缺點
    ReLU:
        優勢:
            收斂速度明顯快於sigmoid和tanh
            不存在梯度消失問題
            計算複雜度低,不須要指數運算
        缺點:
            Relu輸出的均值非0
            存在神經元壞死現象(Dead ReLU Problem)
            relu不會對數據作規範化(壓縮)處理
    Leaky ReLU:
        用來解決ReLU帶來的神經元壞死的問題,可是其表現並不必定比ReLU好

view函數:
    將一個多行的Tensor拼成一行

forward 函數中能夠對Tensor進行任何操做

zero_grad:
    梯度清零

nn.MSELoss:
    計算二者之間的平均方差值

反向傳播的過程只須要調用loss.backgrad()函數便可


dataloader:


怎麼把數據作成batch的:
    數據讀取,構建Dataset子類:
        PyTorch用類torch.utils.data.DataLoader加載數據,並對數據進行採樣,生成batch迭代器
        必須重載的兩個函數是len和getitem
    數據加載:
        torch.utils.data.DataLoader()函數
    



learningrate的含義,通常怎麼調它
:
    學習率,一般要對learning rate 進行衰減
    更改param_group['lr']的值來更改對應參數組的學習率
    PyTorch學習率調整策略經過torch.optim.lr_scheduler接口實現
        1 等間隔調整學習率 StepLR
        2 按需調整學習率 MultiStepLR
        3 指數衰減調整學習率 ExponentialLR
        4 餘弦退火調整學習率 CosineAnnealingLR
        5 自適應調整學習率 ReduceLROnPlateau
        6 自定義調整學習率 LambdaLR


crossentropyloss (交叉熵損失函數):
    針對單目標分類問題, 結合了 nn.LogSoftmax() 和 nn.NLLLoss() 來計算 loss.


softmax迴歸在多類分類中的做用:
    它將多個神經元的輸出,歸一化到( 0, 1) 區間內,所以Softmax的輸出能夠當作機率

2019.3.11python

tqdm:
    用於數據的進度條顯示

Dataset抽象類:
    數據集進行子類化
    重寫 __len__ (數據集大小)、 __getitem__(支持0到len(self)的整數索引)方法

包裝數據和目標張量的數據集

訓練神經網絡時:
    最好是對一個batch的數據進行操做,同時還須要對數據進行shuffle和並行加速等

batch_size:
    每個batch加載多少個樣本

sampler (Sampler, optional) :
     定義從數據集中提取樣本的策略

num_workers:
    使用多進程加載的進程數

collate_fn: 
    如何將多個樣本數據拼接成一個batch,通常使用默認的拼接方式便可

pin_memory:
    是否將數據保存在pin memory區,pin memory中的數據轉到GPU會快一些 

drop_last:
     若是數據集大小不能被batch size整除,則設置爲True後可刪除最後一個不完整的batch。若是設爲False而且數據集的大小不能被batch size整除,則最後一個batch將更小。(默認: False)

Normalize():
    歸一化

大數據量:
    使用 shuffle, 分割成mini-batch

delimiter:
    參數是用來指定每一行用來分隔數據的分隔符

keepdim=True:
    不進行擠壓

pylint:
    檢查一行代碼的長度,變量名是否符合命名標準

Dataset是一個包裝類:
    用來將數據包裝爲Dataset類,而後傳入DataLoader中,咱們再使用DataLoader這個類來更加快捷的對數據進行操做。

enumerate:
    對可迭代的數據進行標號並將其裏面的數據和標號一併打印出來

損失函數的做用:
    衡量模型模型預測的好壞

成本函數的做用:


from PIL import Image

Dataloader類:
    數據的初始化操做

torch.randperm()

2019.3.12:web

collate_fn:    
    如何取樣本的,咱們能夠定義本身的函數來準確地實現想要的功能 

drop_last:
    告訴如何處理數據集長度除於batch_size餘下的數據。True就拋棄,不然保留

pin_memory:
    若是設置爲True,數據加載器會在返回前將張量拷貝到CUDA鎖頁內存。


======將已經分好文件,傳進來,返回一堆的batch======

ctype:
    提供和C語言兼容的數據類型,能夠很方便地調用C DLL

_worker_loop:
    加載數據

_pin_memory_loop:
    數據加載器會在返回前將張量拷貝到CUDA鎖頁內存

numpy_type_map:
    numpy與torch對應數據類型

default_collate:
    (默認校對)錯誤提示

pin_memory_batch:
    將輸入batch的每個Tensor都拷貝到CUDA

_SIGCHLD_handler_set:
    Dataloader worker failures

DataLoader本質上就是一個iterable(跟python的內置類型list等同樣),使用iter(),不能使用next()訪問,訪問並利用多進程加速batch data的

實現Dataset對象,傳入到dataloader中,yeild返回每一次batch的 數據


Dataset  -->  DataLoader  -->  循環DataLoader(很是重要):
dataset = MyDataset() # 實例化Dataset
dataloader = DataLoader(dataset) # 實例化DataLoader
num_epoches = 100 # 訓練100次
for epoch in range(num_epoches): # 訓練100次
    for img, label in dataloader: # 取出數據加載到模型
        ... ...


iterable:每次調用都會返回一個從頭開計數的迭代器(__iter__)
iterator:是從當前位置開始的調用hasNext()方法(__iter__和__next__raise:拋出異常
    raise ValueError("拋出參數異常")

timeout:
    timeout若是是正數,代表等待從worker進程中收集一個batch等待的時間,若超出設定的時間尚未收集到,那就不收集這個內容(應老是大於0,默認爲0)

worker_init_fn :
    每個worker的初始函數

sampler:
    對數據進行採樣

__initialized:
    是否初始化

batch_sampler:
    與sampler相似,可是一次只返回一個batch的indices(索引)

multiprocessing:
    多進程管理的包

__iter__yield :
    把一個函數變成一個 generator(像函數同樣,但能夠返回多個值)
    

__next__:
    返回容器中的下一個元素

raise StopIteration:
    到了Iteration程序結尾,沒有數據了,經過拋出異常的方式,來終止程序

__getstate__:
    返回一個可選的對象(例如元組),其中包含足夠的信息來重構實例

from . import *:
    從當前文件夾導入全部文件

2019.3.13正則表達式

self.index_queue 中存放是 (batch_idx, sample_indices) ,其中 batch_idx 是個 int 值, sample_indices 是個 list 

self.data_queue 中存放的是 (batch_idx, samples), 其中 samples 是 一個 mini-batch 的樣本

with:
    自動關掉文件管道

listdir:
    文件下的目錄

enumerate:
    將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列

generator:
    實質就是iterator,一個迭代器

數據集分紅3個部分:
    訓練集、驗證集、測試集

Jupyter:
    靈活,處理數據,清洗數據

randn:
    產生隨機數

requires_grad:
    True 表示要求梯度(backward)、False不要求梯度

numel():
    數組是否知足指定元素的個數
    return torch.sum(diff * diff) / diff.numel()

with:
    相似與拋出異常

torch.no_grad():
    Adjust weights & reset gradients

torch.nn:
    用於搭建快速各層的模塊

for xb, yb in train_dl:
    print(xb)
    print(yb)
    break           # 醬紫就只會顯示一個batch中的數據

model.weight :(model = nn.Linear)
    線性問題中的權重

model.bias:(model = nn.Linear)
    線性問題中的誤差

model.parameters:(model = nn.Linear)
    線性問題參數

pandas讀取數據:
    pd.read_csv(file_path)

2019.3.14:算法

torch.item():
    only one element tensors can be converted to Python scalars

delimiter=",":
    在np.loadtxt中至關與分隔符的做用

dtype='float32':
    在np.loadtxt中指定加載數據保存的類型

chechsum:
    校驗

__init__() should return None, not 'generator'

indeces:
    每一個數據的行號

dataloader中dataset:
    一個文件返回一個tensor,多個文件返回list

collate_fn:
    很節省內存的,即數據不是一次性加載到內存中再一點點擠牙膏擠出來



yield(生成器):
    

2019.3.15:chrome

python中的next():
    函數用於返回迭代器中的下一項

python中的iter():
    用來生成迭代器

pd.DataFrame類:
    保存數據,轉化成pandas類型的數據

nr.randint(0, 100, size=(3, 4)):
    生成(3,4)的0到100之間的數據

data.to_csv():
    存放數據

Dataset:
    數據集的抽象類

DataLoader提供爲Dataset類對象提供了:
    1.批量讀取數據
    2.打亂數據順序
    3.使用multiprocessing並行加載數據

Dataset中的__getitem__:
    返回地idx個圖像及相關信息

torch.utils.data.Dataloader:
    經過這個類,咱們在準備mini-batch的時候能夠多線程並行處理

mnist數據集

PyTorch 定義:
    一個針對深度學習, 而且使用 GPU 和 CPU 來優化的 tensor library (張量庫) .

Tensor(張量):
    相似於NumPy的ndarray,但還能夠在GPU上使用來加速計算


from __future__ import print_function:
    在python2X的環境中能夠向python3X那樣使用print函數

project interpreter:
    用於管理pycharm中使用的編輯環境

@overload :
    根據參數不一樣實現不一樣的功能

torch.empty(n, m):
    生成n行m列的未初始化的tensor數據

torch.rand(n, m):
    生成n行m列的隨機tensor數據

torch.zeros(n, m):
    生成n行m列全爲零的數據

torch.tensor([x, y, z]):
    直接生成tensor數據

x = x.new_ones(n, m, dtype=torch.double):
    根據已有的tensor創建新的tensor

torch.rand_like(x):
    生成形狀跟x相同的tensor

torch.add(x, y)  等價於 x + y

y.add_(x) 等價於 y = torch.add(x, y)

in-place:
    原位/原地操做

tensor可使用像標準的NumPy同樣的各類索引操做

view:
    改變tensor形狀

.item():
    轉化爲python類型數據

tensor的運算操做,包括轉置,索引,切片,數學運算, 線性代數,隨機數等

Torch張量和NumPy數組將共享它們的底層內存位置,更改一個將更改另外一個

np.add(mat08, 2, out=mat08)
    表示mat08 = mat08 + 2

CPU上的全部張量(CharTensor除外)都支持轉換爲NumPy以及由NumPy轉換回來

張量可使用.to方法移動到任何設備(device)上

device = torch.device("cuda")
x = x.to(device)
    將計算移植到GPU上運算

PyTorch中,全部神經網絡的核心是autograd包

autograd包爲張量上的全部操做提供了自動求導機制,它是一個在運行時定義(define-by-run)的框架

autogrand中屬性requires_grad爲True,經過調用.backward(),來自動計算全部的梯度。這個張量的全部梯度將會自動累加到.grad屬性

要阻止一個張量被跟蹤歷史,能夠調用.detach()方法

staticmethod裝飾器:
    將被裝飾的函數從類中分離出來,該函數不能訪問類的屬性,簡單說能夠將該函數理解爲一個獨立的函數,不容許使用self。

x = torch.ones(2, 2, requires_grad=True):
    建立一個張量並設置requires_grad=True用來追蹤其計算曆史

torch.mean():
    求平均值

.requires_grad_(...) 原地改變了現有張量的 requires_grad 標誌。若是沒有指定的話,默認輸入的這個標誌是False。

若是tensor是一個標量。咱們直接進行反向傳播,out.backward()和out.backward(torch.tensor(1.))等價

.grad:
    表示求導數

雅可比矩陣:
    一階偏導數以必定方式排列成的矩陣,

norm():
    求範式

咱們只想要雅可比向量積,只需將這個向量做爲參數傳給backward

用with torch.no_grad()來阻止autograd跟蹤設置了 .

with torch.no_grad():
    print((x ** 2).requires_grad)

使用torch.nn包來構建神經網絡

2019.3.18:shell

sympy:
    用於進行函數計算的模塊

str.substr(i):
    獲得str從i個位置開始到最後的字符串

破解拼圖驗證碼:


uuid:
    提供UUID類和函數uuid(),用於生成全局惟一標識符

re:
    re模塊提供對正則表達式的支持

selenium:
    selenium模塊用於模擬人的點擊事件來連續訪問瀏覽器,
    自動化測試工具

極驗驗證:
    滑動驗證碼破解,拼圖破解

PhantomJS:
    Web 自動化測試與智能爬蟲利器
    無界面瀏覽器

數據包的Response

edge detector

Opencv:
    contour detector,輪廓檢測

2019.3.19數據庫

爲防止驗證成功時頁面快速切換至查詢結果頁面,可在Network選項卡下將Preserve log選項勾選

geetest_challenge和geetest_validate

passtime應該是拖動驗證碼的時間

imgload應該是驗證碼圖片載入時間

api的參數v是根據請求時間動態變化的

fullbg:
    全圖背景圖片

OpenCV應用領域:
    人機互動、物體識別、圖像分割、人臉識別、動做識別、運動跟蹤、機器人、運動分析、機器視覺、結構分析、汽車安全駕駛

cv2.findContours(Image,contours,hierarchy,mode,method):
    提取輪廓,用於提取圖像的輪廓
    利用cnt[num],對第num個輪廓進行操做
    第一個返回值是另外一個圖片,跟輸入的圖片類似
    第二個返回值hierarchy:
        矩陣大小爲N×M,N爲輪廓的個數,M恆等於4,
        第一個數:表示同一級輪廓的下個輪廓的編號,若是這一級輪廓沒有下一個輪廓,通常        是這一級輪廓的最後一個的時候,則爲-1
        第二個數:表示同一級輪廓的上個輪廓的編號,若是這一級輪廓沒有上一個輪廓,通常        是這一級輪廓的第一個的時候,則爲-1
        第三個數:表示該輪廓包含的下一級輪廓的第一個的編號,假如沒有,則爲-1
        第四個數:表示該輪廓的上一級輪廓的編號,假如沒有上一級,則爲-1

cv2.imread(FILE_PATH):
    獲得待加載圖片

cv2.cvtColor(img, cv2.COLOR_BGR2GRAY):
    cvtColor 顏色空間轉化器,將RGB的圖片轉化爲灰度圖片

cv2.threshold():
    圖像去噪,經過二值化使圖像中數據量大爲減小,從而能凸顯出目標的輪廓

cv2.RETR_TREE:
    RETR_TREE:提取全部輪廓並從新創建網狀輪廓結構 

cv2.CHAIN_APPROX_SIMPLE:
    CHAIN_APPROX_SIMPLE:壓縮水平方向,垂直方向,對角線方向的元素,值保留該方向的重點座標,若是一個矩形輪廓只需4個點來保存輪廓信息 

cv2.drawContours(Image,contours,contourIdx,color,thickness):
    繪製輪廓,用於繪製找到的圖像輪廓
    Image:表示目標圖像
    contours:表示輸入的輪廓組,每一組輪廓由點vector構成
    contourIdx:指明畫第幾個輪廓,若是該參數爲負值,則畫所有輪廓
    color:爲輪廓的顏色
    thickness:爲輪廓的線寬,若是爲負值或CV_FILLED表示填充輪廓內部

cv2.waitKey(0):
    表示程序會無限制的等待用戶的按鍵事件 

cv2.contourArea():
    計算輪廓面積

cv2.arcLength(cnt, True):
    計算輪廓面積

cv2.approxPolyDP();
    對圖像輪廓點進行多邊形擬合

cv2.polylines():多邊形
    
boundingRect():
    函數做用:計算輪廓的垂直邊界最小矩形

selenium(自動化測試):
    1、pip install selenium
    2、下載webdriver,根據瀏覽器的不一樣下載不一樣的webdriver
    3、操做selenium

ChromeDriver:
    經過chrome的自動代理框架控制瀏覽器

driver = webdriver.Chrome()
    建立適用與chrome瀏覽器的driver
    同時,打開chrome瀏覽器

driver.get('http://www.baidu.com')
    打開百度對應的網頁

driver.find_element_by_id('kw').send_keys("GetcharZp")
    找到id=kw的輸入框,輸入GetcharZP 字段

driver.find_element_by_id('su').click()
    找到'su'這個按鈕,執行點擊事件

document.documentElement.scrollTop=10000:
    返回或設置匹配元素的滾動條的垂直位置

driver.execute_script(js):
    執行對應的js代碼

geetest(以前):
    未點擊--原圖
    點擊--有缺塊的圖

ActionChains():
    動做鏈,執行多個動做的時候使用,當使用perform()時,將全部動做,依次執行

click_and_hold():
    鼠標點擊圓球不鬆開

move_by_offset():
    

須要對客戶的資料進行保密,防止瀏覽器軟件或者惡意插件獲取到能夠在input中加入autocomplete="off" 來關閉記錄

driver.implicitly_wait(3):
    設置他的隱式等待時間能夠,能夠解決輸入框不能輸入字段的問題

getpixel(x, y):
    獲得座標(x, y)處的RGB

 2019.3.20json

Fiddler是經過改寫HTTP代理,讓數據從它那經過,來監控而且截取到數據

Fiddler(app.gsxt.gov.cn):
    JSON, searchword=祕塔

RNN(循環神經網絡):
    進行文本分類

訓練一個詞向量模型,須要大量語料

LSTM(長短時間記憶網絡):
    處理和預測時間序列中間隔和延遲相對較長的重要事件

GRU至關於簡化的 LSTM

聊天機器人:
    基於檢索的模型提供支持

sequence-to-sequence:
    應用於機器翻譯、自動應答機器人等

使用小批量數據聯合訓練解碼器和編碼器模型

from __future__ import absolute_import :
    那麼在程序的編寫過程當中使用相似from package.submodule import b 只能導入系統環境路徑裏面的包,導入不了你寫的應用程序的子包,若是導入你寫的應用程序的子包必須使用from ..submodule import b。

from __future__ import print_function:
    即便在python2.X,使用print就得像python3.X那樣加括號使用

from __future__ import unicode_literals:
    模塊中顯式出現的全部字符串轉爲unicode類型

torch.jit:
    JIT是一套編譯器工具,用於彌合PyTorch研究 與生產之間的差距

csv模塊:
    用於csv文件的讀寫

codecs:
    天然語言編碼轉化模塊

itertools:
    用於建立自定義的迭代器

torch.cuda.is_available():
    用於判斷系統是否適合使用cuda加速

規則匹配

fasttext

2019.3.21api

unittest:
    編寫單元測試,咱們須要引入Python自帶的unittest模塊

bitbucket:
    倉庫代碼管理

assertEqual:
    斷言,用於判斷在unittest中判斷兩個結果是否一致

客戶端發送一個HTTP請求到服務器的請求消息包括如下格式:
    請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成

HTTP響應也由四個部分組成,分別是:
    狀態行、消息報頭、空行和響應正文

session是一次瀏覽器和服務器的交互的會話,session信息存在於服務器端,存在服務器的/tmp 目錄下

惟一的session_id 來綁定一個用戶

請求行信息:  GET /day36/demo2 HTTP/1.1
請求行信息 = 請求方式(GET) + 請求的資源(/day36/demo2 ) + 協議的版本(http1.1)
請求行由請求方法字段、URL字段和HTTP協議版本字段3個字段組成

GET:帶參, POST:不帶參

請求頭部通知服務器有關於客戶端請求的信息,請求頭用於說明是誰或什麼在發送請求、請求源於何處,或者客戶端的喜愛及能力

狀態行(status line):
    經過提供一個狀態碼來講明所請求的資源狀況

消息頭:
    用於描述服務器的基本信息,以及服務器的描述,服務器經過這些數據的描述信息,能夠通知客戶端如何處理等一下子它送的數據

status_code:
    網頁狀態碼

採集時爲避免被封IP,常常會使用代理

大部分時候咱們都是經過xml配置方式向DAO中注入sessionfactory來實例化bean

from urllib.parse import urlencode:
    能夠在拼url的時候把其轉化爲str

405:
    方法不被容許

urllib應用於python3中,將以前的urllib2和urllib1合併了

header

MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品

2019.3.22

端口:5601
    至關於es的一個前端界面,能夠在這裏面訪問數據

端口:9200
    一段json數據

JSON 數據的書寫格式是:名稱/值對

JSON 對象在花括號中書寫

Elasticsearch 是一個分佈式、可擴展、實時的搜索與數據分析引擎,一切都是以索引的形式存儲,它實際上作的只是建立一個你本身的Schema文檔

數據以JSON格式非結構化存儲,這也使其成爲一種NoSQL數據庫

能夠經過從命令行運行curl -XDELETE localhost:9200/_all來毀掉整個世界

獲取全部的設置 : GET _all/_settings

在設置中分片的數量不能修改可是副本的數量能夠修改

PUT:至關於更改數據能夠created,也能夠updated

GET:至關於查詢數據

DELETE:
    能夠刪除記錄 DELETE /school/student/7
    刪除表 DELETE /school/student
    刪除庫 DELETE /school

PUT/POST:
    均可以用來增長數據,用PUT本身指定ID,用POST系統自動生成惟一標識ID

curl www.baidu.com:
    會以HTML的形式返回百度的頁面

能夠經過PUT建立索引

# 經過PUT建立庫
PUT /school
{
  "student":{
    "name":true,
    "age":true
  }
}

# 以GET方式添加數據,用戶追加ID
PUT /school/student/7
{
  "name":"GetcharZp7",
  "age":20
}

# 以POST方式添加數據,系統本身生成ID
POST /school/student/
{
  "name":"GetcharZp6",
  "age":18
}

# 查詢該庫下的全部記錄
GET /school/_search
{
  "query": {
    "match_all": {}
  }
}

# 刪除ID=7的記錄
DELETE /school/student/7

Kibana:
    _type表示該條數據對應在那個表中
    _index表示該條數據在那個庫中
    _score表示文檔對應search相關的匹配度
    hits表示存放數據的位置
    mapping 映射是建立索引的時候,能夠預先定義字段的類型以及相關屬性 
    "result"="noop" : 空操做

# 根據id=1在school庫的student表中只查找name字段的內容
GET /school/student/1?_source=name

# 根據content的模糊匹配查詢, 根據pubtimea倒序排列
GET /pipeline-news/_search
{
  "query": {
    "match": {
      "content": "中小學"
    }
  },
  "sort": [
    {
      "pubtime": {
        "order": "desc"
      }
    }
  ]
}

# 根據ID查詢到結果後,局部更新
POST /pipeline-news/news/5c703cc438f1df1d934f459a/_update
{
  "doc": {
    "cate":"news"
  }
}

elasticsearch提供bool來實現組合多條件查詢

match_phrase:
    實現精確匹配

term:
    精確匹配

# 範圍搜索
GET /school/_search
{
  "query": {
      "range": {
        "age": {
          "gte": 19,  # gte最小值
          "lte": 20    # lte最大值
        }
      }
  }
}

# 條件組合搜索,兩個詞去或,存在一個就能夠
GET /school/_search
{
  "query": {
    "match": {
      "name": {
        "query": "GetcharZp6 I",
        "operator": "or"
      }
    }
  }
}

fuzzy查詢是一個詞項級別的查詢是 term 查詢的模糊等價

wildcard與 prefix 前綴查詢的特性相似,與前綴查詢不一樣的是它容許指定匹配的正則式.它使用標準的 shell 通配符查詢: ? 匹配任意字符, * 匹配 0 或多個字符


regexp:
    正則表達式匹配

W[0-9].+
    這個正則表達式要求詞必須以 W 開頭,緊跟 0 至 9 之間的任何一個數字,而後接一或多個其餘字符

數據在索引時的預處理有助於提升前綴匹配的效率

prefix 、 wildcard 和 regexp 查詢是基於詞操做的,若是用它們來查詢 analyzed 字段,它們會檢查字段裏面的每一個詞,而不是將字段做爲總體來處理

 2019.3.25

ES提供了一個叫 bulk 的 API 來進行批量操做

正則查詢:regexp

var regex2 = /\[(.+?)\]/g;   // [] 中括號

執行查詢並獲取該查詢的匹配數:count()

在與query同等級的位置加上"_source",將返回"_source"中指定的字段

elastic search最多容許讀10000條數據

compile() 函數將一個字符串編譯爲字節代碼

re.findall('\[(.*?)\]', str):
    正則表達式,查找中括號[]中的內容

re.findall('\【(.*?)\】', str):
    正則表達式,查找中括號【】中的內容

a in b:
    能夠經過a in b 來判斷a是否在b中

HBuilder是DCloud(數字天堂)推出的一款支持HTML5的Web開發IDE

for 屬性規定 label 與哪一個表單元素綁定

2019.3.26

META標籤用來描述一個HTML網頁文檔的屬性,例如做者、日期和時間、網頁描述、關鍵詞、頁面刷新等

margin是外邊距 padding是內邊距 

line-height:行高

open(file_path, 'w', encoding='utf-8'):
    能夠解決UnicodeEncodeError,關鍵是加上encoding='utf-8'


"index":{
    "max_result_window" :1000000
}
經過醬紫,from,size能夠輸入更大的數

Fasttext最大的特色是模型簡單,只有一層的隱層以及輸出層

微信廣告文章分類:fast text

Word2vec,是一羣用來產生詞向量的相關模型

Fasttext主要有兩個功能,一個是訓練詞向量,另外一個是文本分類

詞向量的做用:
    爲了描述詞與詞之間的類似程度而構建的高維向量,而視頻,音頻數據構建自己意義,能夠直接經過數據進行描述圖像與聲音的類似度。

fastText 方法包含三部分:模型架構、層次 Softmax 和 N-gram 特徵

logging做用:
    系統或軟件、應用的運行狀況

supervised:
    用於監督學習

2019.3.27

sys.argv:
    在外部向程序內部傳遞參數

Python strip():
     方法用於移除字符串頭尾指定的字符(默認爲空格或換行符)或字符序列

extend():
     向列表尾部追加一個列表,將列表中的每一個元素都追加進來

準確率就是找得對,召回率就是找得全

fasttext:
    監督學習:fasttext.supervised()
    數據的測試:fasttext.test

load_model:
    加載模型

precision:
    精準率

positive:正詞(廣告)

negative:負詞(無廣告)

label:標籤

2019.3.28

Python 的 re 模塊提供了re.sub用於替換字符串中的匹配項

詞頻效應(word frequency effect)是指指人們對高頻詞的識別快於對低頻詞的識別

subword:
    用來統計子單詞的個數 char

N-gram模型是一種語言模型(Language Model,LM),語言模型是一個基於機率的判別模型,它的輸入是一句話(單詞的順序序列),輸出是這句話的機率,即這些單詞的聯合機率(joint probability)

webbrowser.open('')
    打開指定瀏覽器

tr:表示一行,td:表示一列

在代碼的開頭加上# coding=gbk
    能夠解決Non-UTF-8 code starting with 醬紫的問題

2019.3.29

seek()方法用於移動文件讀取指針到指定位置

在天然語言的文本分類中,主要使用兩類模型,一類是使用傳統的機器學習模型,如樸素貝葉斯,最大熵,支持向量機等

數據轉化爲 ==> 詞向量 ==> 將詞向量輸入一層神經網絡 ==> 預測

NLTK 用於天然語言處理的 Python 庫

nltk.word_tokenize(sent) #對句子進行分詞

split()當不帶參數時以空格進行分割

用log_softmax是由於損失函數用的是NLLLoss() 即負對數似然損失

pytorch 數據的輸入類型是
    data = [(str.split(), "classes"),()]

view()就是改變下向量維數

view()函數做用是將一個多行的Tensor,拼接成一行

torch.setdefaulttensortype(‘torch.FloatTensor’)
    設置默認的tensor數據類型

model.parameters()
    返回結果是model裏的全部參數

perceptron

 2019.3.19

pytorch實現textCNN

nn包的導入:
    import torch.nn as nn

requires_grad 設置爲 True,代表咱們想要自動計算梯度,這將用於反向傳播中以優化權重

損失函數:描述咱們模型的預測距離目標還有多遠

優化算法:用於更新權重;

torch.cuda.is_available()
    判斷是否存在知足cuda運算的GPU

使用 torch.nn 庫構建模型

使用 torch.autograd 庫訓練模型

將數據封裝進 torch.utils.data.Dataset 庫

使用 NumPy interface 鏈接你的模型、數據和你最喜歡的工具

numpy 是一個通用的科學計算框架,它沒有計算圖、深度學習和梯度的概念

前向傳遞輸入信號直至輸出產生偏差,反向傳播偏差信息更新權重矩陣

numpy dot()函數,是將兩個向量進行點乘

torch.clamp(input,min,max,out=None)-> Tensor將input中的元素限制在[min,max]範圍內並返回一個Tensor

clone()至關於徹底複製了以前的tensor,他的梯度也會複製,並且在反向傳播時,克隆的樣本和結果是等價的

使用自動微分來自動計算神經網絡的反向傳播

若是 x 是一個 Variable,那麼 x.data 則是一個 Tensor,x.grad 是另外一個用來保存 x 關於某個標量值的梯度

經過 Variable 的自動求導就再也不須要手動地實現反向傳播

感知機是一種線性分類模型屬於判別模型

2019.4.1

word2vec(word to vector)是一個將單詞轉換成向量形式的工具。能夠把對文本內容的處理簡化爲向量空間中的向量運算,計算出向量空間上的類似度,來表示文本語義上的相 似度。

word2vec.word2vec('corpusSegDone.txt', 'corpusWord2Vec.bin', size=300,verbose=True)
    便可構建詞向量,獲得結果放在文件名爲 corpusWord2Vec.bin的文件中。能夠經過設定size 的大小來指定詞向量的維數。

用TaggedLineDocument 實現,每一個doc默認編號

感知機是一種線性分類模型屬於判別模型

感知機輸入爲實例的特徵向量,輸出爲實例的類別

感知機實際上表示爲輸入空間到輸出空間的映射函數

輸入信號的加權和比閾值高,意味着這個神經元被激活

感知機學習的目標是求得一個可以將訓練集正負實例點徹底分開的超平面

爲了找出這樣的超平面,即肯定感知機的模型參數w、b,須要定義一個損失函數(成本函數)並將損失函數極小化

損失函數的做用:衡量模型模型預測的好壞

損失函數:度量神經網絡的輸出的預測值,與實際值之間的差距的一種方式。

感知機模型選擇的是採用隨機梯度降低,這意味着咱們每次僅僅須要使用一個誤分類的點來更新梯度。

要將positive和negative打亂,要否則可能只學的到一部分數據

每次僅僅須要使用一個誤分類的點來更新梯度

對於w和b的梯度用偏導能夠直接求出來

爲了保證收斂性,咱們須要將 w 初始化爲零向量、將 b 初始化爲 0

在requests中發送文件的接口只有一種,那就是使用requests.post的files參數

400(Bad request):出現這個請求無效報錯說明請求沒有進入到後臺服務裏

2019.4.2

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式

request提交數據的時候提示415的緣由多是傳入的數據格式不對,能夠考慮切換爲json試下

2019.4.3

代價函數(損失函數),最小二乘法

經過相關係數來衡量線性相關性的強弱

梯度降低法

爬蟲:一段自動抓取互聯網信息的程序,從互聯網上抓取對於咱們有價值的信息。

調度器:至關於一臺電腦的CPU,主要負責調度URL管理器、下載器、解析器之間的協調工做。 

2019.4.4

python要讀docx文檔,要使用python-docx 模塊

logging.basicConfig(level=logging.DEBUG)
設置日誌級別,WARN

打印日誌:
    login.error(e)

等級由低到高:debug<info<warn<Error<Fatal;

Event對象做用:
    設置信號、清除信號、等待

python線程開發使用標準庫threading

threading.Thread(target=,  name=', args=')
    經過threading建立一個線程對象,target爲目標函數;name爲線程別名;args爲目標函數傳遞實參,元組;kwargs爲目標函數的關鍵字傳參,字典

python的線程沒有優先級,沒有線程組的概念,也不能被銷燬、中止、掛起,天然也沒有恢復、中斷
相關文章
相關標籤/搜索