主頁 >  其他 > LightGBM的引數詳解以及如何調優

LightGBM的引數詳解以及如何調優

2020-09-11 03:39:45 其他

lightGBM可以用來解決大多數表格資料問題的演算法,有很多很棒的功能,并且在kaggle這種該資料比賽中會經常使用,

但我一直對了解哪些引數對性能的影響最大以及我應該如何調優lightGBM引數以最大限度地利用它很感興趣,

我想我應該做一些研究,了解更多關于lightGBM的引數…并分享我的旅程,

我希望讀完這篇文章后,你能回答以下問題:

  • LightGBM中實作了哪些梯度增強方法,它們有什么區別?
  • 一般來說,哪些引數是重要的?
  • 哪些正則化引數需要調整?
  • 如何調整lightGBM引數在python?

梯度提升的方法

使用LightGBM,你可以運行不同型別的漸變增強提升方法,你有:GBDT、DART和GOSS,這些可以通過“boosting”引數指定,

在下一節中,我將對這些方法進行解釋和比較,

梯度提升決策樹(GBDT)

該方法是本文首先提出的傳統梯度提升決策樹,也是XGBoost和pGBRT等優秀庫背后的演算法,

由于其精度高、效率高、穩定性好,目前已得到廣泛的應用,你可能知道gbdt是一個決策樹的集合模型但是它到底是什么意思呢?

讓我來告訴你要點,

它基于三個重要原則:

  • 弱學習者(決策樹)
  • 梯度優化
  • 提升技術

所以在gbdt方法中,我們有很多決策樹(弱學習者),這些樹是按順序構建的:

  • 首先,樹學習如何適應目標變數
  • 第二棵樹學習如何適合殘差(差異)之間的預測,第一棵樹和地面真相
  • 第三棵樹學習如何匹配第二棵樹的殘差,以此類推,

所有這些樹都是通過傳播整個系統的誤差梯度來訓練的,

gbdt的主要缺點是,在每個樹節點中找到最佳分割點非常耗時,而且會消耗記憶體,其他的提升方法試圖解決這個問題,

DART 梯度提升

在這篇優秀的論文中(arxiv/1505.01866),你可以學習所有關于DART梯度提升的東西,這是一種使用dropout(神經網路中的標準)的方法,來改進模型正則化和處理一些其他不太明顯的問題,

也就是說,gbdt存在過度專門化(over-specialization)的問題,這意味著在以后的迭代中添加的樹往往只會影響對少數實體的預測,而對其余實體的貢獻則可以忽略不計,添加dropout會使樹在以后的迭代中更加難以專門化那些少數的示例,從而提高性能,

lgbm goss 基于梯度的單邊采樣

事實上,將該方法命名為lightgbm的最重要原因就是使用了基于本文的Goss方法,Goss是較新的、較輕的gbdt實作(因此是“light”gbm),

標準的gbdt是可靠的,但在大型資料集上速度不夠快,因此goss提出了一種基于梯度的采樣方法來避免搜索整個搜索空間,我們知道,對于每個資料實體,當梯度很小時,這意味著不用擔心資料是經過良好訓練的,而當梯度很大時,應該重新訓練,這里我們有兩個方面,資料實體有大的和小的漸變,因此,goss以一個大的梯度保存所有資料,并對一個小梯度的資料進行隨機抽樣(這就是為什么它被稱為單邊抽樣),這使得搜索空間更小,goss的收斂速度更快,

讓我們把這些差異放在一個表格中:

注意:如果你將增強設定為RF,那么lightgbm演算法表現為隨機森林而不是增強樹! 根據檔案,要使用RF,必須使用bagging_fraction和feature_fraction小于1,

正則化

在這一節中,我將介紹lightgbm的一些重要的正則化引數,顯然,這些是您需要調優以防止過擬合的引數,

您應該知道,對于較小的資料集(<10000條記錄),lightGBM可能不是最佳選擇,在這里,調優lightgbm引數可能沒有幫助,

此外,lightgbm使用葉向樹生長演算法,而xgboost使用深度樹生長演算法,葉向方法使樹的收斂速度更快,但過擬合的幾率增加,

注意:如果有人問您LightGBM和XGBoost之間的主要區別是什么?你可以很容易地說,它們的區別在于它們是如何實作的,

根據lightGBM檔案,當面臨過擬合時,您可能需要做以下引數調優:

  • 使用更小的max_bin
  • 使用更小的num_leaves
  • 使用min_data_in_leaf和min_sum_hessian_in_leaf
  • 通過設定bagging_fraction和bagging_freq使用bagging_freq
  • 通過設定feature_fraction使用特征子采樣
  • 使用更大的訓練資料
  • 嘗試lambda_l1、lambda_l2和min_gain_to_split進行正則化
  • 嘗試max_depth以避免樹的深度增長

在下面的部分中,我將更詳細地解釋這些引數,

lambda_l1

Lambda_l1(和lambda_l2)控制l1/l2,以及min_gain_to_split用于防止過擬合,我強烈建議您使用引數調優(在后面的小節中討論)來確定這些引數的最佳值,

num_leaves

num_leaves無疑是控制模型復雜性的最重要引數之一,通過它,您可以設定每個弱學習者擁有的葉子的最大數量,較大的num_leaves增加了訓練集的精確度,也增加了因過度擬合而受傷的幾率,根據檔案,一個簡單的方法是num_leaves = 2^(max_depth)但是,考慮到在lightgbm中葉狀樹比層次樹更深,你需要小心過度擬合!因此,必須同時使用max_depth調優num_leaves,

子采樣

通過子樣例(或bagging_fraction),您可以指定每個樹構建迭代使用的行數百分比,這意味著將隨機選擇一些行來匹配每個學習者(樹),這不僅提高了泛化能力,也提高了訓練速度,

我建議對基線模型使用更小的子樣本值,然后在完成其他實驗(不同的特征選擇,不同的樹結構)時增加這個值,

feature_fraction

特征分數或子特征處理列采樣,LightGBM將在每次迭代(樹)上隨機選擇特征子集,例如,如果將其設定為0.6,LightGBM將在訓練每棵樹之前選擇60%的特性,

這個功能有兩種用法:

  1. 可以用來加速訓練嗎
  2. 可以用來處理過擬合嗎

max_depth

該引數控制每棵經過訓練的樹的最大深度,將對:

  • num_leaves引數的最佳值
  • 模型的性能
  • 訓練時間

注意,如果您使用較大的max_depth值,那么您的模型可能會對于訓練集過擬合,

max_bin

裝箱是一種用離散視圖(直方圖)表示資料的技術,Lightgbm在創建弱學習者時,使用基于直方圖的演算法來尋找最優分割點,因此,每個連續的數字特性(例如視頻的視圖數)應該被分割成離散的容器,

此外,在這個GitHub repo(huanzhang12/lightgbm-gpu)中,你可以找到一些全面的實驗,完全解釋了改變max_bin對CPU和GPU的影響,

如果你定義max_bin 255,這意味著我們可以有255個唯一的值每個特性,那么,較小的max_bin會導致更快的速度,較大的值會提高準確性,

訓練引數

當你想用lightgbm訓練你的模型時,一些典型的問題可能會出現:

  1. 訓練是一個耗時的程序
  2. 處理計算復雜度(CPU/GPU RAM約束)
  3. 處理分類特征
  4. 擁有不平衡的資料集
  5. 定制度量的需要
  6. 需要對分類或回歸問題進行的調整

在本節中,我們將嘗試詳細解釋這些要點,

num_iterations

Num_iterations指定增強迭代的次數(要構建的樹),你建立的樹越多,你的模型就越精確,代價是:

  • 較長的訓練時間
  • 過擬合的可能性更高

從較少的樹開始構建基線,然后當您想從模型中擠出最后的%時增加基線,

建議使用更小的learning_rate和更大的num_iteration,此外,如果您想要更高的num_iteration,那么您應該使用early_stopping_rounds,以便在無法學習任何有用的內容時停止訓練,

early_stopping_rounds

如果驗證度量在最后一輪停止后沒有改進,此引數將停止訓練,這應該與一些迭代成對地進行定義,如果你把它設定得太大,你就增加了過擬合的變化(但你的模型可以更好),

經驗法則是讓它占num_iterations的10%,

lightgbm categorical_feature

使用lightgbm的優勢之一是它可以很好地處理分類特性,是的,這個演算法非常強大,但是你必須小心如何使用它的引數,lightgbm使用一種特殊的整數編碼方法(由Fisher提出)來處理分類特征

實驗表明,該方法比常用的單熱編碼方法具有更好的性能,

它的默認值是“auto”,意思是:讓lightgbm決定哪個表示lightgbm將推斷哪些特性是絕對的,

它并不總是作業得很好,我強烈建議您簡單地用這段代碼手動設定分類特性

cat_col = dataset_name.select_dtypes(‘object’).columns.tolist()

但是在幕后發生了什么,lightgbm是如何處理分類特征的呢?

根據lightgbm的檔案,我們知道樹學習器不能很好地使用一種熱編碼方法,因為它們在樹中深度生長,在提出的替代方法中,樹形學習器被最優構造,例如,一個特征有k個不同的類別,有2^(k-1) -1個可能的劃分,通過fisher方法,可以改進到k * log(k),通過找到分類特征中值排序直方圖的最佳分割方式,

is_unbalance vs scale_pos_weight

其中一個問題,你可能面臨的二分類問題是如何處理不平衡的資料集,顯然,您需要平衡正/負樣本,但如何在lightgbm中做到這一點呢?

lightgbm中有兩個引數允許你處理這個問題,那就是is_unbalance和scale_pos_weight,但是它們之間有什么區別呢?

當您設定Is_unbalace: True時,演算法將嘗試自動平衡占主導地位的標簽的權重(使用列集中的pos/neg分數)

如果您想改變scale_pos_weight(默認情況下是1,這意味著假設正負標簽都是相等的),在不平衡資料集的情況下,您可以使用以下公式來正確地設定它

sample_pos_weight = number of negative samples / number of positive samples

lgbm函式宏指令(feaval)

有時你想定義一個自定義評估函式來測量你的模型的性能,你需要創建一個“feval”函式,

Feval函式應該接受兩個引數:

preds 、train_data

并回傳

eval_name、eval_result、is_higher_better

讓我們一步一步地創建一個自定義度量函式,

定義一個單獨的python函式

def feval_func(preds, train_data):
   # Define a formula that evaluates the results
    return ('feval_func_name', eval_result, False)

使用這個函式作為引數:

print('Start training...')
lgb_train = lgb.train(..., 
                      metric=None, 
                      feval=feval_func)

注意:要使用feval函式代替度量,您應該設定度量引數 metric “None”,

分類引數與回歸引數

我之前提到的大多數事情對于分類和回歸都是正確的,但是有些事情需要調整,

具體你應該:

lightgbm最重要的引數

我們已經在前面的部分中回顧并了解了有關lightgbm引數的知識,但是如果不提及Laurae令人難以置信的基準測驗,那么關于增強樹的文章將是不完整的,

您可以了解用于lightGBM和XGBoost的許多問題的最佳默認引數,

你可以查看這里(https://sites.google.com/view/lauraepp/parameters),但一些最重要的結論是:


注意:絕對不要理會任何引數值的默認值,并根據您的問題進行調整, 也就是說,這些引數是超引數調整演算法的一個很好的起點,

Python中的Lightgbm引數調整示例

最后,在解釋完所有重要引數之后,該進行一些實驗了!

我將使用最受歡迎的Kaggle競賽之一:Santander Customer Transaction Prediction. 交易預測

我將使用本文介紹如何在任何腳本中的Python中運行超引數調整,

在開始之前,一個重要的問題! 我們應該調整哪些引數?

請注意您要解決的問題,例如,Santander 資料集高度不平衡,在調整時應考慮到這一點!

一些引數是相互依賴的,必須一起調整, 例如,min_data_in_leaf取決于訓練樣本和num_leaves的數量,

注意:為超引數創建兩個字典是一個好主意,一個字典包含您不想調整的引數和值,另一個字典包含您想要調整的引數和值范圍,

SEARCH_PARAMS = {'learning_rate': 0.4,
                 'max_depth': 15,
                 'num_leaves': 20,
                 'feature_fraction': 0.8,
                 'subsample': 0.2}
FIXED_PARAMS={'objective': 'binary',
              'metric': 'auc',
              'is_unbalance':True,
              'boosting':'gbdt',
              'num_boost_round':300,
              'early_stopping_rounds':30}

這樣,您就可以將基線值與搜索空間分開!

如果您查看了上一節,則會發現我在資料集上進行了14個以上的不同實驗, 在這里,我解釋了如何逐步調整超引數的值,

創建基線訓練代碼:

from sklearn.metrics import roc_auc_score, roc_curve
from sklearn.model_selection import train_test_split
import neptunecontrib.monitoring.skopt as sk_utils
import lightgbm as lgb
import pandas as pd
import neptune
import skopt
import sys
import os

SEARCH_PARAMS = {'learning_rate': 0.4,
                'max_depth': 15,
                'num_leaves': 32,
                'feature_fraction': 0.8,
                'subsample': 0.2}

FIXED_PARAMS={'objective': 'binary',
             'metric': 'auc',
             'is_unbalance':True,
             'bagging_freq':5,
             'boosting':'dart',
             'num_boost_round':300,
             'early_stopping_rounds':30}

def train_evaluate(search_params):
   # you can download the dataset from this link(https://www.kaggle.com/c/santander-customer-transaction-prediction/data)
   # import Dataset to play with it
   data= https://blog.csdn.net/m0_46510245/article/details/pd.read_csv("sample_train.csv")
   X = data.drop(['ID_code', 'target'], axis=1)
   y = data['target']
   X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=1234)
   train_data = https://blog.csdn.net/m0_46510245/article/details/lgb.Dataset(X_train, label=y_train)
   valid_data = lgb.Dataset(X_valid, label=y_valid, reference=train_data)

   params = {'metric':FIXED_PARAMS['metric'],
             'objective':FIXED_PARAMS['objective'],
             **search_params}

   model = lgb.train(params, train_data,                     
                     valid_sets=[valid_data],
                     num_boost_round=FIXED_PARAMS['num_boost_round'],
                     early_stopping_rounds=FIXED_PARAMS['early_stopping_rounds'],
                     valid_names=['valid'])
   score = model.best_score['valid']['auc']
   return score

使用您選擇的超引數優化庫(例如scikit-optimize),

neptune.init('mjbahmani/LightGBM-hyperparameters')
neptune.create_experiment('lgb-tuning_final', upload_source_files=['*.*'],
                              tags=['lgb-tuning', 'dart'],params=SEARCH_PARAMS)

SPACE = [
   skopt.space.Real(0.01, 0.5, name='learning_rate', prior='log-uniform'),
   skopt.space.Integer(1, 30, name='max_depth'),
   skopt.space.Integer(10, 200, name='num_leaves'),
   skopt.space.Real(0.1, 1.0, name='feature_fraction', prior='uniform'),
   skopt.space.Real(0.1, 1.0, name='subsample', prior='uniform')
]
@skopt.utils.use_named_args(SPACE)
def objective(**params):
   return -1.0 * train_evaluate(params)

monitor = sk_utils.NeptuneMonitor()
results = skopt.forest_minimize(objective, SPACE, 
                                n_calls=100, n_random_starts=10, 
                                callback=[monitor])
sk_utils.log_results(results)

neptune.stop()

注,本文代碼使用了neptune.ai平臺,所以有一些neptune的api

完整代碼在這里 https://ui.neptune.ai/mjbahmani/LightGBM-hyperparameters/experiments?viewId=standard-view&utm_source=medium&utm_medium=crosspost&utm_campaign=blog-lightgbm-parameters-guide

嘗試不同型別的配置并在Neptune中跟蹤結果

最后,在下表中,您可以看到引數中發生了什么變化,

總結

長話短說,您了解到:

  1. lightgbm的主要引數是什么,
  2. 如何使用feval函式創建自定義指標
  3. 主要引數的默認值是多少
  4. 看到了如何調整lightgbm引數以改善模型性能的示例

作者:Kamil Kaczmarek

deephub 翻譯組

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/4233.html

標籤:其他

上一篇:JavaScript、Python和Go:誰將成為2021年最好的后端編程語言?

下一篇:GitHub上標星68k,基于SpringBoot+Netty分布式開源的即時通訊系統專案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more