99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Python中從頭構(gòu)建CNN?

Dbwd_Imgtec ? 來源:YXQ ? 2019-08-08 11:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這是一篇關(guān)于CNN(卷積神經(jīng)網(wǎng)絡(luò))的簡單指南,本文將介紹CNN如何工作,以及如何在Python中從頭開始構(gòu)建一個CNN。

在過去的幾年中,有很多關(guān)于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的討論,尤其是因?yàn)樗鼈円呀?jīng)徹底改變了計(jì)算機(jī)視覺領(lǐng)域。在這篇文章中,我們將基于神經(jīng)網(wǎng)絡(luò)的基本背景知識,探索CNN是什么,理解它們是如何工作的,并使用Python中的numpy從頭開始構(gòu)建一個真正的卷積神經(jīng)網(wǎng)絡(luò)。

本文假設(shè)讀者有一定的神經(jīng)網(wǎng)絡(luò)的基本知識。如果你想要了解一些關(guān)于神經(jīng)網(wǎng)絡(luò)的知識,你可以讀一下我的關(guān)于對神經(jīng)網(wǎng)絡(luò)的介紹。

1、動機(jī)

CNN的經(jīng)典用例是執(zhí)行圖像分類,例如查看寵物的圖像并確定它是貓還是狗。這是一項(xiàng)看似非常簡單的任務(wù),你可能會有這樣的疑惑:為什么不使用普通的神經(jīng)網(wǎng)絡(luò)呢?不得不說這是一個好問題。

原因1:圖像很大

目前用于計(jì)算機(jī)視覺問題的圖像通常為224x224甚至更大。想象一下,構(gòu)建一個神經(jīng)網(wǎng)絡(luò)來處理224x224彩色圖像:包括圖像中的3個顏色通道(RGB),即224x224x3=150528個輸入權(quán)重!這種網(wǎng)絡(luò)中的典型隱藏層可能有1024個節(jié)點(diǎn),因此我們必須僅為第一層訓(xùn)練150528x1024=15億個權(quán)重。想象一下?lián)碛?5億個權(quán)重的神經(jīng)網(wǎng)絡(luò),是不是太大了?這幾乎是不可能完成訓(xùn)練的。

最重要的是其實(shí)我們并不需要那么多的權(quán)重,相反我們僅知道像素點(diǎn)其鄰居的點(diǎn)才是最有用的。因?yàn)閳D像中的物體是由小的局部特征組成的,如圓形虹膜或一張紙的方角。對于第一個隱藏層中的每個節(jié)點(diǎn)來說,查看每個像素似乎是很浪費(fèi)的!

原因2:位置可變

如果你訓(xùn)練了一個網(wǎng)絡(luò)來檢測狗,那么無論圖像出現(xiàn)在哪張照片中,你都希望它能夠檢測到狗。想象一下,訓(xùn)練一個在某個狗圖像上運(yùn)行良好的網(wǎng)絡(luò),然后為它提供相同圖像的略微移位版本,此時的網(wǎng)絡(luò)會有完全不同的反應(yīng)!

那么CNN是如何幫助我們解決這些問題的呢?不要著急我們很快就會看到CNN如何幫助我們緩解這些問題!

2、數(shù)據(jù)集

在這篇文章中,我們將解決計(jì)算機(jī)視覺的“Hello,World!”:MNIST手寫數(shù)字分類問題。很簡單:給定圖像,將其分類為數(shù)字。

來自MNIST數(shù)據(jù)集的樣本圖像

MNIST數(shù)據(jù)集中的每個圖像都是28x28,其中包含了一個居中的灰度數(shù)字。說實(shí)話,一個正常的神經(jīng)網(wǎng)絡(luò)實(shí)際上可以很好地解決這個問題。你可以將每個圖像視為28x28=784維矢量,將其輸入到784-dim圖層,堆疊一些隱藏圖層,最后輸出10個節(jié)點(diǎn)的輸出圖層,每個數(shù)字1個。

這樣做可以完成任務(wù),因?yàn)镸NIST數(shù)據(jù)集包含的都是些居中的小圖像,因此我們不會遇到上述的大小或移位問題。但是,請記住,大多數(shù)現(xiàn)實(shí)世界的圖像分類問題并不容易。

那么就讓我們進(jìn)入CNN吧!

3、卷積

什么是卷積神經(jīng)網(wǎng)絡(luò)?

它們基本上是使用卷積層的神經(jīng)網(wǎng)絡(luò),即Conv層,它們基于卷積的數(shù)學(xué)運(yùn)算。Conv圖層由一組過濾器組成,你可以將其視為2d數(shù)字矩陣。這是一個示例3x3過濾器:

一個3x3過濾器

我們可以通過將濾波器與輸入圖像進(jìn)行卷積來產(chǎn)生輸出圖像。

這包括:

在某個位置覆蓋圖像頂部的過濾器;

在過濾器中的值與圖像中的相應(yīng)值之間執(zhí)行逐元素乘法;

所有元素(element-wise products)求和,此和是輸出圖像中目標(biāo)像素的輸出值。

重復(fù)所有位置。

注釋:實(shí)際上我們(以及許多CNN實(shí)現(xiàn))在技術(shù)上使用互相關(guān)(Cross-correlation)而不是卷積,但它們幾乎完全相同。

這4步描述有點(diǎn)抽象,所以讓我們舉個例子吧,考慮這個微小的4x4灰度圖像和這個3x3過濾器:

4x4圖像(左)和3x3濾鏡(右)

圖像中的數(shù)字表示像素強(qiáng)度,其中0是黑色,255是白色。我們將對輸入圖像和過濾器進(jìn)行卷積以生成2x2輸出圖像:

2x2輸出圖像

首先,讓我們將過濾器疊加在圖片的左上角:

第1步:將過濾器(右)疊加在圖像上方(左)

接下來,我們在重疊圖像值和過濾器值之間執(zhí)行逐元素乘法。以下是結(jié)果,從左上角開始向右,然后向下:

第2步:執(zhí)行逐元素乘法。

接下來,我們總結(jié)所有結(jié)果。這很容易:62-33=29。

最后,我們將結(jié)果放在輸出圖像的目標(biāo)像素中。由于我們的過濾器覆蓋在輸入圖像的左上角,因此我們的目標(biāo)像素是輸出圖像的左上角像素:

我們做同樣的步驟來生成輸出圖像的其余部分:

3.1 這有用嗎?

用過濾器卷積圖像有什么作用?我們可以先使用我們一直使用的示例3x3濾波器,這通常被稱為垂直索貝爾濾波器:

垂直索貝爾濾波器

以下是垂直Sobel濾波器的示例:

垂直Sobel濾波器卷積的圖像

同樣,還有一個水平Sobel濾波器:

水平Sobel濾波器

水平Sobel濾波器卷積的圖像

到底發(fā)生了什么?Sobel濾波器是邊緣檢測器。垂直Sobel濾波器檢測的是垂直邊緣,水平Sobel濾波器的是檢測水平邊緣?,F(xiàn)在可以輕松解釋輸出圖像:輸出圖像中的亮像素(具有高值的像素)表示原始圖像中存在強(qiáng)邊緣。

你能看出為什么邊緣檢測圖像可能比原始圖像更有用嗎?回想一下我們的MNIST手寫數(shù)字分類問題。在MNIST上訓(xùn)練的CNN可以尋找數(shù)字1,例如,通過使用邊緣檢測濾波器并檢查圖像中心附近的兩個突出的垂直邊緣。通常,卷積有助于我們查找特定的本地化圖像特征。

3.2 填充(Padding)

還記得先用3x3過濾器對4x4的輸入圖像進(jìn)行卷積,以產(chǎn)生2x2輸出圖像嗎?通常,我們希望輸出圖像的大小與輸入圖像的大小相同。為此,我們在圖像周圍添加零,以便我們可以在更多位置疊加過濾器。3x3濾鏡需要1個像素的填充:

4x4輸入與3x3濾波器卷積,使用填充以產(chǎn)生4x4輸出

這稱為“相同”填充,因?yàn)檩斎牒洼敵鼍哂邢嗤某叽?。不使用任何填充,這是我們一直在做的,有時也被稱為“有效”填充。

3.3 Conv圖層

既然我們知道圖像卷積是如何工作的以及為什么用它,那讓我們看看它是如何在CNN中實(shí)際使用的。如前所述,CNN包括使用一組過濾器將輸入圖像轉(zhuǎn)換為輸出圖像的conv layer。conv層的主要參數(shù)是它具有的過濾器數(shù)量。

對于我們的MNIST CNN,我們將使用一個帶有8個過濾器的小conv layer作為我們網(wǎng)絡(luò)中的初始層。這意味著它會將28x28輸入圖像轉(zhuǎn)換為26x26x8輸出向量:

提醒:輸出為26x26x8而不是28x28x8,因?yàn)槲覀兪褂糜行畛洌@會將輸入的寬度和高度減少2。

conv layer中的4個過濾器中的每一個都會產(chǎn)生26x26輸出,因此堆疊在一起它們構(gòu)成26x26x8的向量。

3.4 執(zhí)行卷積

是時候?qū)⑽覀儗W(xué)到的東西放到代碼中了!我們將實(shí)現(xiàn)一個conv layer的前饋部分,該部分負(fù)責(zé)處理帶有輸入圖像的過濾器,以產(chǎn)生輸出向量。為簡單起見,我們假設(shè)過濾器是3x3(其實(shí)5x5和7x7過濾器也很常見)。

讓我們開始實(shí)現(xiàn)一個conv layer類:

importnumpyasnpclassConv3x3:#AConvolutionlayerusing3x3filters.def__init__(self,num_filters):self.num_filters=num_filters#filtersisa3darraywithdimensions(num_filters,3,3)#Wedivideby9toreducethevarianceofourinitialvaluesself.filters=np.random.randn(num_filters,3,3)/9

該類只有一個參數(shù):過濾器的數(shù)量。在構(gòu)造函數(shù)中,我們存儲過濾器的數(shù)量并使用NumPy的randn()方法初始化隨機(jī)過濾器數(shù)組。

注意:在初始化期間初始值很重要,如果初始值太大或太小,則訓(xùn)練網(wǎng)絡(luò)將無效。

要了解更多信息,請閱讀Xavier Initialization:https://www.quora.com/What-is-an-intuitive-explanation-of-the-Xavier-Initialization-for-Deep-Neural-Networks

接下來,實(shí)際卷積:

classConv3x3:#...defiterate_regions(self,image):'''Generatesallpossible3x3imageregionsusingvalidpadding.-imageisa2dnumpyarray'''h,w=image.shapeforiinrange(h-2):forjinrange(w-2):im_region=image[i:(i+3),j:(j+3)]yieldim_region,i,jdefforward(self,input):'''Performsaforwardpassoftheconvlayerusingthegiveninput.Returnsa3dnumpyarraywithdimensions(h,w,num_filters).-inputisa2dnumpyarray'''h,w=input.shapeoutput=np.zeros((h-2,w-2,self.num_filters))forim_region,i,jinself.iterate_regions(input):output[i,j]=np.sum(im_region*self.filters,axis=(1,2))returnoutput

iterate_regions()是一個輔助生成器方法,為我們生成所有有效的3x3圖像區(qū)域,這對于稍后實(shí)現(xiàn)此類的后向部分非常有用。

上面是實(shí)際執(zhí)行卷積的代碼行。讓我們分解一下:

im_region:一個包含相關(guān)圖像區(qū)域的3x3陣列。

self.filters:一個3d數(shù)組。

im_region*self.filtersself.filters:我們使用numpy的廣播(broadcasting)功能以元素方式乘以兩個數(shù)組,結(jié)果是具有相同尺寸的3d數(shù)組。

axis=(1,2)num_filters:我們使用np.sum()上一步的結(jié)果,產(chǎn)生一個長度為1d的數(shù)組,其中每個元素包含相應(yīng)過濾器的卷積結(jié)果。

我們將結(jié)果分配給output[i,j],其中包含輸出中像素的卷積結(jié)果(i,j)。

對輸出中的每個像素執(zhí)行上面的序列,直到我們獲得我們想要的結(jié)果!讓我們的代碼進(jìn)行測試運(yùn)行:

importmnistfromconvimportConv3x3#ThemnistpackagehandlestheMNISTdatasetforus!#Learnmoreathttps://github.com/datapythonista/mnisttrain_images=mnist.train_images()train_labels=mnist.train_labels()conv=Conv3x3(8)output=conv.forward(train_images[0])print(output.shape)#(26,26,8)

注意:為簡單起見,在我們的Conv3x3實(shí)現(xiàn)中,我們假設(shè)輸入是一個2d numpy數(shù)組,因?yàn)檫@是我們的MNIST圖像的存儲方式。這對我們有用,我們將它用作網(wǎng)絡(luò)中的第一層,但大多數(shù)CNN都有更多的Conv層。如果我們要構(gòu)建一個需要Conv3x3多次使用的更大的網(wǎng)絡(luò),我們必須使輸入成為3d numpy數(shù)組。

4、池化(Pooling)

圖像中的相鄰像素傾向于具有相似的值,因此conv layer通常也會為輸出中的相鄰像素產(chǎn)生類似的值。但是conv layer中輸出的大部分信息都是冗余的,例如,如果我們使用邊緣檢測過濾器并在某個位置找到強(qiáng)邊緣,那么我們也可能會在距離原始像素1個像素偏移的位置找到相對較強(qiáng)的邊緣。但是,我們可能并沒有找到任何新的東西。

池化層解決了這個問題。他們所做的就是減少通過猜測在輸入中產(chǎn)生的匯總值。該池通常是通過簡單的操作完成max,min或average等這些操作。以下是池化大小為2的Max Pooling圖層的示例:

4x4圖像上的最大池(池大小為2)以產(chǎn)生2x2輸出

為了執(zhí)行最大池化,我們以2x2塊(因?yàn)槌卮笮?2)遍歷輸入圖像,并將最大值放入相應(yīng)像素的輸出圖像中。

對于我們的MNIST CNN,我們將在初始conv layer之后放置一個池大小為2的Max Pooling層,這樣池化層就會將26x26x8輸入轉(zhuǎn)換為13x13x8輸出:

4.1執(zhí)行池化

我們將使用MaxPool2與上一節(jié)中的conv類相同的方法實(shí)現(xiàn)一個類:

importnumpyasnpclassMaxPool2:#AMaxPoolinglayerusingapoolsizeof2.defiterate_regions(self,image):'''Generatesnon-overlapping2x2imageregionstopoolover.-imageisa2dnumpyarray'''h,w,_=image.shapenew_h=h//2new_w=w//2foriinrange(new_h):forjinrange(new_w):im_region=image[(i*2):(i*2+2),(j*2):(j*2+2)]yieldim_region,i,jdefforward(self,input):'''Performsaforwardpassofthemaxpoollayerusingthegiveninput.Returnsa3dnumpyarraywithdimensions(h/2,w/2,num_filters).-inputisa3dnumpyarraywithdimensions(h,w,num_filters)'''h,w,num_filters=input.shapeoutput=np.zeros((h//2,w//2,num_filters))forim_region,i,jinself.iterate_regions(input):output[i,j]=np.amax(im_region,axis=(0,1))returnoutput

此類與我們之前實(shí)現(xiàn)的Conv3x3類工作方式類似。特別注意的是為了找到給定圖像區(qū)域的最大值,我們使用np.amax()。我們設(shè)置是axis=(0,1),因?yàn)槲覀冎幌M谇皟蓚€維度(高度和寬度)上進(jìn)行最大化,而不是第三個維度,num_filters。

我們來試試吧!

importmnistfromconvimportConv3x3frommaxpoolimportMaxPool2#ThemnistpackagehandlestheMNISTdatasetforus!#Learnmoreathttps://github.com/datapythonista/mnisttrain_images=mnist.train_images()train_labels=mnist.train_labels()conv=Conv3x3(8)pool=MaxPool2()output=conv.forward(train_images[0])output=pool.forward(output)print(output.shape)#(13,13,8)

MNIST CNN馬上要完成了!

5、Softmax

為了完成我們的CNN,我們需要讓它能夠?qū)嶋H進(jìn)行預(yù)測。我們將通過使用標(biāo)準(zhǔn)最終層來實(shí)現(xiàn)多類分類問題:Softmax層,一個使用softmax激活函數(shù)的標(biāo)準(zhǔn)全連接(密集)層。

提示:完全連接層將每個節(jié)點(diǎn)連接到前一層的每個輸出。我們在之前的神經(jīng)網(wǎng)絡(luò)的介紹中使用了完全連接的圖層。

Softmax將任意實(shí)際值轉(zhuǎn)換為概率。如果你對其背后的數(shù)學(xué)有興趣,自己可以簡單了解下,因?yàn)樗芎唵巍?/p>

5.1用法

我們將使用一個帶有10個節(jié)點(diǎn)的softmax層,每個節(jié)點(diǎn)都代表一個數(shù)字,softmax層是我們CNN的最后一層。圖層中的每個節(jié)點(diǎn)都將連接到輸入,在使用softmax變換之后,概率最高的節(jié)點(diǎn)表示的數(shù)字將成為CNN的輸出!

5.2交叉熵?fù)p失函數(shù)

你可能會有這樣的疑問,為什么還要將輸出轉(zhuǎn)換為概率呢?最高輸出值是否總是具有最高概率?如果你有這樣的疑問,那說明你的感覺很對。我們實(shí)際上不需要使用softmax來預(yù)測數(shù)字,因?yàn)槲覀兛梢赃x擇網(wǎng)絡(luò)輸出最高的數(shù)字!

softmax真正做的是幫助我們量化我們對預(yù)測的確定程度,這在訓(xùn)練和評估我們的CNN時非常有用。更具體地說,它可以幫我們確定每個預(yù)測的正確程度。

5.3實(shí)施Softmax

讓我們實(shí)現(xiàn)一個Softmax圖層類:

importnumpyasnpclassSoftmax:#Astandardfully-connectedlayerwithsoftmaxactivation.def__init__(self,input_len,nodes):#Wedividebyinput_lentoreducethevarianceofourinitialvaluesself.weights=np.random.randn(input_len,nodes)/input_lenself.biases=np.zeros(nodes)defforward(self,input):'''Performsaforwardpassofthesoftmaxlayerusingthegiveninput.Returnsa1dnumpyarraycontainingtherespectiveprobabilityvalues.-inputcanbeanyarraywithanydimensions.'''input=input.flatten()input_len,nodes=self.weights.shapetotals=np.dot(input,self.weights)+self.biasesexp=np.exp(totals)returnexp/np.sum(exp,axis=0)

我們現(xiàn)在已經(jīng)完成了CNN的整個編碼工作!把它放在一起:

importmnistimportnumpyasnpfromconvimportConv3x3frommaxpoolimportMaxPool2fromsoftmaximportSoftmax#Weonlyusethefirst1ktestingexamples(outof10ktotal)#intheinterestoftime.Feelfreetochangethisifyouwant.test_images=mnist.test_images()[:1000]test_labels=mnist.test_labels()[:1000]conv=Conv3x3(8)#28x28x1->26x26x8pool=MaxPool2()#26x26x8->13x13x8softmax=Softmax(13*13*8,10)#13x13x8->10defforward(image,label):'''CompletesaforwardpassoftheCNNandcalculatestheaccuracyandcross-entropyloss.-imageisa2dnumpyarray-labelisadigit'''#Wetransformtheimagefrom[0,255]to[-0.5,0.5]tomakeiteasier#toworkwith.Thisisstandardpractice.out=conv.forward((image/255)-0.5)out=pool.forward(out)out=softmax.forward(out)#Calculatecross-entropylossandaccuracy.np.log()isthenaturallog.loss=-np.log(out[label])acc=1ifnp.argmax(out)==labelelse0returnout,loss,accprint('MNISTCNNinitialized!')loss=0num_correct=0fori,(im,label)inenumerate(zip(test_images,test_labels)):#Doaforwardpass._,l,acc=forward(im,label)loss+=lnum_correct+=acc#Printstatsevery100steps.ifi%100==99:print('[Step%d]Past100steps:AverageLoss%.3f|Accuracy:%d%%'%(i+1,loss/100,num_correct))loss=0num_correct=0

執(zhí)行cnn.py,我們可以得到:

MNISTCNNinitialized![Step100]Past100steps:AverageLoss2.302|Accuracy:11%[Step200]Past100steps:AverageLoss2.302|Accuracy:8%[Step300]Past100steps:AverageLoss2.302|Accuracy:3%[Step400]Past100steps:AverageLoss2.302|Accuracy:12%

想親自嘗試或修改這些代碼?在瀏覽器中運(yùn)行此CNN,你也可以在Github上找到它。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:手把手帶你走進(jìn)卷積神經(jīng)網(wǎng)絡(luò)!

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    基礎(chǔ)篇3:掌握Python的條件語句與循環(huán)

    通過學(xué)習(xí)條件語句和循環(huán),您能夠編寫出能夠根據(jù)不同情況和條件作出決策的Python程序。這些結(jié)構(gòu)在編程中非常常見,對于提高編程能力和構(gòu)建復(fù)雜程序至關(guān)重要。在接下來的學(xué)習(xí)和實(shí)踐,不斷練習(xí)這些概念,您將能夠更自如地運(yùn)用它們來解決實(shí)
    發(fā)表于 07-03 16:13

    何在Ubuntu 24.04上運(yùn)行5.4.47版本?

    18.04 的 SDK,但最終導(dǎo)致構(gòu)建錯誤,在 ubuntu 24.04 上缺少庫,因此 SDK 似乎對構(gòu)建系統(tǒng)本身有很強(qiáng)的依賴性。 下一步,我嘗試在 Ubuntu 24.04 上為 5.4.47
    發(fā)表于 04-11 06:08

    Errno22構(gòu)建鏡像/嘗試獲取包時出錯怎么解決?

    Ubuntu 主機(jī)和 Windows 之間共享(雙啟動)。這會產(chǎn)生任何問題嗎? 如果是,如何在不干擾 Ubuntu 分區(qū)的情況下刪除 Windows 分區(qū),請建議 python errno 22 錯誤
    發(fā)表于 04-03 07:36

    ?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗(yàn)~

    RaspberryPiOS預(yù)裝了Python,你需要使用其虛擬環(huán)境來安裝包。今天出版的最新一期《TheMagPi》雜志刊登了我們文檔負(fù)責(zé)人NateContino撰寫的一篇實(shí)用教程,幫助你入門
    的頭像 發(fā)表于 03-25 09:34 ?325次閱讀
    ?如<b class='flag-5'>何在</b>虛擬環(huán)境中使用 <b class='flag-5'>Python</b>,提升你的開發(fā)體驗(yàn)~

    零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python程序?

    在這篇文章,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運(yùn)行一個簡單的Pyth
    的頭像 發(fā)表于 03-25 09:27 ?715次閱讀
    零基礎(chǔ)入門:如<b class='flag-5'>何在</b>樹莓派上編寫和運(yùn)行<b class='flag-5'>Python</b>程序?

    無法使用Raspberry與Ubuntu 20.04構(gòu)建OpenVINO?怎么辦?

    按照 BuildForLinux* 的構(gòu)建步驟操作 使用構(gòu)建命令: cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PYTHON
    發(fā)表于 03-06 06:42

    深度學(xué)習(xí)入門:簡單神經(jīng)網(wǎng)絡(luò)的構(gòu)建與實(shí)現(xiàn)

    深度學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)是核心模型。今天我們用 Python 和 NumPy 構(gòu)建一個簡單的神經(jīng)網(wǎng)絡(luò)。 神經(jīng)網(wǎng)絡(luò)由多個神經(jīng)元組成,神經(jīng)元之間通過權(quán)重連接。我們構(gòu)建一個包含輸入層、隱藏層和輸
    的頭像 發(fā)表于 01-23 13:52 ?520次閱讀

    使用Python實(shí)現(xiàn)xgboost教程

    使用Python實(shí)現(xiàn)XGBoost模型通常涉及以下幾個步驟:數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、模型評估和模型預(yù)測。以下是一個詳細(xì)的教程,指導(dǎo)你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發(fā)表于 01-19 11:21 ?1354次閱讀

    如何使用Python構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)模型

    構(gòu)建一個LSTM(長短期記憶)神經(jīng)網(wǎng)絡(luò)模型是一個涉及多個步驟的過程。以下是使用Python和Keras庫構(gòu)建LSTM模型的指南。 1. 安裝必要的庫 首先,確保你已經(jīng)安裝了Python
    的頭像 發(fā)表于 11-13 10:10 ?1560次閱讀

    何在Python中使用socket

    和UDP。 2. 創(chuàng)建Socket 在Python,我們使用 socket 模塊來創(chuàng)建socket。以下是創(chuàng)建一個TCP socket的示例代碼: import socket # 創(chuàng)建一個socket
    的頭像 發(fā)表于 11-01 16:10 ?727次閱讀

    使用Python構(gòu)建高效的HTTP代理服務(wù)器

    構(gòu)建一個高效的HTTP代理服務(wù)器在Python涉及多個方面,包括性能優(yōu)化、并發(fā)處理、協(xié)議支持(HTTP/HTTPS)、錯誤處理以及日志記錄等。
    的頭像 發(fā)表于 10-23 07:41 ?524次閱讀

    第二屆大會回顧第25期 | OpenHarmony上的Python設(shè)備應(yīng)用開發(fā)

    Python以其簡單、易學(xué)和功能強(qiáng)大而聞名,有著廣泛的用戶群體。采用Python開發(fā)有助于降低OpenHarmony的學(xué)習(xí)門檻。如何在OpenHarmony上用Python開發(fā)設(shè)備應(yīng)用
    的頭像 發(fā)表于 08-27 11:53 ?1207次閱讀
    第二屆大會回顧第25期 | OpenHarmony上的<b class='flag-5'>Python</b>設(shè)備應(yīng)用開發(fā)

    如何構(gòu)建多層神經(jīng)網(wǎng)絡(luò)

    構(gòu)建多層神經(jīng)網(wǎng)絡(luò)(MLP, Multi-Layer Perceptron)模型是一個在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域廣泛使用的技術(shù),尤其在處理分類和回歸問題時。在本文中,我們將深入探討如何從頭開始構(gòu)建一個多層神經(jīng)網(wǎng)絡(luò)模型,包括模型設(shè)計(jì)、
    的頭像 發(fā)表于 07-19 17:19 ?1551次閱讀

    Python在AI的應(yīng)用實(shí)例

    Python在人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python在AI的幾個關(guān)鍵應(yīng)用
    的頭像 發(fā)表于 07-19 17:16 ?2664次閱讀

    何在Python開發(fā)人工智能

    Python開發(fā)人工智能(AI)是一個廣泛而深入的主題,它涵蓋了從基礎(chǔ)的數(shù)據(jù)處理到復(fù)雜的機(jī)器學(xué)習(xí)、深度學(xué)習(xí)以及自然語言處理等多個領(lǐng)域。
    的頭像 發(fā)表于 07-15 15:01 ?3694次閱讀