日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > Caffe >内容正文

Caffe

【深度学习】Keras vs PyTorch vs Caffe:CNN实现对比

發布時間:2025/3/8 Caffe 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】Keras vs PyTorch vs Caffe:CNN实现对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | PRUDHVI VARMA?

編譯 | VK?

來源 | Analytics Indiamag

在當今世界,人工智能已被大多數商業運作所應用,而且由于先進的深度學習框架,它非常容易部署。這些深度學習框架提供了高級編程接口,幫助我們設計深度學習模型。使用深度學習框架,它通過提供內置的庫函數來減少開發人員的工作,從而使我們能夠更快更容易地構建模型。

在本文中,我們將構建相同的深度學習框架,即在Keras、PyTorch和Caffe中對同一數據集進行卷積神經網絡圖像分類,并對所有這些方法的實現進行比較。最后,我們將看到PyTorch構建的CNN模型如何優于內置Keras和Caffe的同行。

本文涉及的主題

  • 如何選擇深度學習框架。

  • Keras的優缺點

  • PyTorch的優缺點

  • Caffe的優缺點

  • 在Keras、PyTorch和Caffe實現CNN模型。

選擇深度學習框架

在選擇深度學習框架時,有一些指標可以找到最好的框架,它應該提供并行計算、良好的運行模型的接口、大量內置的包,它應該優化性能,同時也要考慮我們的業務問題和靈活性,這些是我們在選擇深度學習框架之前要考慮的基本問題。讓我們比較三個最常用的深度學習框架Keras、Pytorch和Caffe。

Keras

Keras是一個開源框架,由Google工程師Francois Chollet開發,它是一個深度學習框架,我們只需編寫幾行代碼,就可以輕松地使用和評估我們的模型。

如果你不熟悉深度學習,Keras是初學者最好的入門框架,Keras對初學者十分友好,并且易于與python一起工作,并且它有許多預訓練模型(VGG、Inception等)。不僅易于學習,而且它支持Tensorflow作為后端。

使用Keras的局限性

  • Keras需要改進一些特性

  • 我們需要犧牲速度來換取它的用戶友好性

  • 有時甚至使用gpu也需要很長時間。

使用Keras框架的實際實現

在下面的代碼片段中,我們將導入所需的庫。

import?keras from?keras.datasets?import?mnist from?keras.models?import?Sequential from?keras.layers?import?Dense,?Dropout,?Flatten from?keras.layers?import?Conv2D,?MaxPooling2D from?keras?import?backend?as?K

超參數:

batch_size?=?128 num_classes?=?10 epochs?=?12 img_rows,?img_cols?=?28,?28 (x_train,?y_train),?(x_test,?y_test)?=?mnist.load_data()

在下面的代碼片段中,我們將構建一個深度學習模型,其中包含幾個層,并分配優化器、激活函數和損失函數。

model?=?Sequential() model.add(Conv2D(32,?kernel_size=(3,?3),activation='relu',input_shape=input_shape)) model.add(Conv2D(64,?(3,?3),?activation='relu')) model.add(MaxPooling2D(pool_size=(2,?2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128,?activation='relu')) model.add(Dropout(0.5)) model.add(Dense(num_classes,?activation='softmax')) model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizers.Adam(),metrics=['accuracy'])

在下面的代碼片段中,我們將訓練和評估模型。

model.fit(x_train,?y_train,batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(x_test,?y_test)) score?=?model.evaluate(x_test,?y_test,?verbose=0) print('Test?loss:',?score[0]) print('Test?accuracy:',?score[1])

PyTorch

PyTorch是一個由Facebook研究團隊開發的開源框架,它是深度學習模型的一種實現,它提供了python環境提供的所有服務和功能,它允許自動微分,有助于加速反向傳播過程,PyTorch提供了各種模塊,如torchvision,torchaudio,torchtext,可以靈活地在NLP中工作,計算機視覺。PyTorch對于研究人員比開發人員更靈活。

PyTorch的局限性

  • PyTorch在研究人員中比在開發人員中更受歡迎。

  • 它缺乏生產力。

使用PyTorch框架實現

安裝所需的庫

import?numpy?as?np import?torch import?torch.nn?as?nn import?torch.nn.functional?as?F import?torch.utils.data.dataloader?as?dataloader import?torch.optim?as?optim from?torch.utils.data?import?TensorDataset from?torchvision?import?transforms from?torchvision.datasets?import?MNIST

在下面的代碼片段中,我們將加載數據集并將其拆分為訓練集和測試集。

train?=?MNIST('./data',?train=True,?download=True,?transform=transforms.Compose([transforms.ToTensor(),? ]),?) test?=?MNIST('./data',?train=False,?download=True,?transform=transforms.Compose([transforms.ToTensor(), ]),?) dataloader_args?=?dict(shuffle=True,?batch_size=64,num_workers=1,?pin_memory=True) train_loader?=?dataloader.DataLoader(train,?**dataloader_args) test_loader?=?dataloader.DataLoader(test,?**dataloader_args) train_data?=?train.train_data train_data?=?train.transform(train_data.numpy())

在下面的代碼片段中,我們將構建我們的模型,并設置激活函數和優化器。

class?Model(nn.Module):def?__init__(self):super(Model,?self).__init__()self.fc1?=?nn.Linear(784,?548)self.bc1?=?nn.BatchNorm1d(548)?self.fc2?=?nn.Linear(548,?252)self.bc2?=?nn.BatchNorm1d(252)self.fc3?=?nn.Linear(252,?10)??????????????def?forward(self,?x):a?=?x.view((-1,?784))b?=?self.fc1(a)b?=?self.bc1(b)b?=?F.relu(b)b?=?F.dropout(b,?p=0.5)?b?=?self.fc2(b)b?=?self.bc2(b)b?=?F.relu(b)b?=?F.dropout(b,?p=0.2)b?=?self.fc3(b)out?=?F.log_softmax(b)return?out model?=?Model() model.cuda() optimizer?=?optim.SGD(model.parameters(),?lr=0.001)

在下面的代碼片段中,我們將訓練我們的模型,在訓練時,我們將指定損失函數,即交叉熵。

model.train() losses?=?[] for?epoch?in?range(12):for?batch_idx,?(data,data_1)?in?enumerate(train_loader):data,data_1?=?Variable(data.cuda()),?Variable(target.cuda())optimizer.zero_grad()y_pred?=?model(data)?loss?=?F.cross_entropy(y_pred,?target)losses.append(loss.data[0])loss.backward()optimizer.step()if?batch_idx?%?100?==?1:print('\r?Train?Epoch:?{}?[{}/{}?({:.0f}%)]\tLoss:?{:.6f}'.format(epoch,?batch_idx?*?len(data),?len(train_loader.dataset),?100.?*?batch_idx?/?len(train_loader),loss.data[0]),?end='')?????????print() #評估模型evaluate=Variable(test_loader.dataset.test_data.type_as(torch.FloatTensor())).cuda() output?=?model(evaluate) predict?=?output.data.max(1)[1] pred?=?pred.eq(evaluate.data) accuracy?=?pred.sum()/pred.size()[0] print('Accuracy:',?accuracy)

Caffe

Caffe(Convolutional Architecture for Fast Feature Embedding)是Yangqing Jia開發的開源深度學習框架。該框架支持人工智能領域的研究人員和工業應用。

大部分開發者使用Caffe是因為它的速度,它使用一個NVIDIA K40 GPU每天可以處理6000萬張圖像。Caffe有很多貢獻者來更新和維護框架,而且與深度學習的其他領域相比,Caffe在計算機視覺模型方面工作得很好。

Caffe的局限性

Caffe沒有更高級別的API,所以很難做實驗。

在Caffe中,為了部署我們的模型,我們需要編譯源代碼。

安裝Caffe

!apt?install?-y?caffe-tools-cpu

導入所需的庫

import?os import?numpy?as?np import?math import?caffe import?lmdb

在下面的代碼片段中,我們將指定硬件環境。

os.environ["GLOG_minloglevel"]?=?'2' CAFFE_ROOT="/caffe" os.chdir(CAFFE_ROOT)? USE_GPU?=?True if?USE_GPU:caffe.set_device(0)caffe.set_mode_gpu() else:caffe.set_mode_cpu() caffe.set_random_seed(1)? np.random.seed(24)

在下面的代碼片段中,我們將定義有助于數據轉換的image_generator和batch_generator 。

def?image_generator(db_path):db_handle?=?lmdb.open(db_path,?readonly=True)?with?db_handle.begin()?as?db:cur?=?db.cursor()?for?_,?value?in?cur:?datum?=?caffe.proto.caffe_pb2.Datum()datum.ParseFromString(value)?int_x?=?caffe.io.datum_to_array(datum)?x?=?np.asfarray(int_x,?dtype=np.float32)?tyield?x?-?128?def?batch_generator(shape,?db_path):gen?=?image_generator(db_path)res?=?np.zeros(shape)?while?True:?for?i?in?range(shape[0]):res[i]?=?next(gen)?yield?res

在下面的代碼片段中,我們將給出MNIST數據集的路徑。

num_epochs?=?0? iter_num?=?0? db_path?=?"content/mnist/mnist_train_lmdb" db_path_test?=?"content/mnist/mnist_test_lmdb" base_lr?=?0.01 gamma?=?1e-4 power?=?0.75for?epoch?in?range(num_epochs):print("Starting?epoch?{}".format(epoch))input_shape?=?net.blobs["data"].data.shapefor?batch?in?batch_generator(input_shape,?db_path):iter_num?+=?1net.blobs["data"].data[...]?=?batchnet.forward()for?name,?l?in?zip(net._layer_names,?net.layers):for?b?in?l.blobs:b.diff[...]?=?net.blob_loss_weights[name]net.backward()learning_rate?=?base_lr?*?math.pow(1?+?gamma?*?iter_num,?-?power)for?l?in?net.layers:for?b?in?l.blobs:b.data[...]?-=?learning_rate?*?b.diffif?iter_num?%?50?==?0:print("Iter?{}:?loss={}".format(iter_num,?net.blobs["loss"].data))if?iter_num?%?200?==?0:print("Testing?network:?accuracy={},?loss={}".format(*test_network(test_net,?db_path_test)))

使用下面的代碼片段,我們將獲得最終的準確性。

print("Training?finished?after?{}?iterations".format(iter_num)) print("Final?performance:?accuracy={},?loss={}".format(*test_network(test_net,?db_path_test)))

結論

在本文中,我們演示了使用三個著名框架:Keras、PyTorch和Caffe實現CNN圖像分類模型的。我們可以看到,PyTorch開發的CNN模型在精確度和速度方面都優于在Keras和Caffe開發的CNN模型。

作為一個初學者,我一開始使用Keras,這對于初學者是一個非常簡單的框架,但它的應用是有限的。但是PyTorch和Caffe在速度、優化和并行計算方面是非常強大的框架。

原文鏈接:https://analyticsindiamag.com/keras-vs-pytorch-vs-caffe-comparing-the-implementation-of-cnn/

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):

總結

以上是生活随笔為你收集整理的【深度学习】Keras vs PyTorch vs Caffe:CNN实现对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩五月天 | 亚洲人在线观看视频 | 让男按摩师摸好爽视频 | 亚洲精品色图 | 国产亚洲综合av | 午夜视频a| 极品少妇一区二区 | 国产福利视频网站 | 国产亚洲欧美日韩精品一区二区三区 | 91瑟瑟| 91蜜桃| 亚洲精品乱码久久久久久蜜桃91 | 奇米影视第四色7777 | 91国在线观看 | 爱爱免费网站 | 欧美第一视频 | 免费的黄网站 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 欧美放荡办公室videos4k | 澳门黄色网 | 一区精品二区国产 | 国产成人精品一区二区三区福利 | 青青青国产在线 | 亚洲色图在线视频 | 亚洲一区二区精品视频 | 香蕉视频免费网站 | 天堂中文8 | 精品国产视频一区二区三区 | 性色免费视频 | 一区二区精 | 红猫大本营在线观看的 | 色91视频 | 18禁男女爽爽爽午夜网站免费 | 日韩激情av| 同性色老头性xxxx老头 | 69av导航| 伊人色综合久久天天 | 美国一区二区三区 | 国产欧美日韩另类 | 91久久一区 | 久久久亚洲av波多野结衣 | 日本人妖网站 | 日韩一区二区三区四区五区六区 | 国产av无码专区亚洲精品 | 岛国片在线免费观看 | 精品无码国产污污污免费网站 | 亚洲成人激情视频 | 久久伊 | av网站入口| 亚洲一区在线观看视频 | 在线国产区 | 翔田千里一区二区三区av | 亚洲尻逼| 加勒比在线免费视频 | 欧美在线视频免费播放 | 黄色免费av | 日本精品黄| 1024毛片基地 | 自拍偷拍亚洲区 | 狠狠躁狠狠躁视频专区 | 精品影视 | 天堂va欧美va亚洲va老司机 | 一区二区在线免费看 | 久操国产在线 | 看全色黄大色黄大片大学生 | 色屁屁草草影院ccyycom | 国产美女菊爆在线播放APP | 男人天堂网站 | 国产中文字幕久久 | av五月天在线 | 在线观看亚洲国产 | 99久久99久久 | 亚洲人毛茸茸 | 青青青青草| 国产成人精品一区二区三区在线观看 | 激情视频网 | 新狠狠干| 欧美亚洲国产成人 | 欧美播放器 | 伊人久久国产 | 毛片基地站 | 日本免费在线观看视频 | 天堂资源av| 在线97 | 91在线观看视频 | 久久久久女人精品毛片九一 | 农村妇女毛片 | 快射视频在线观看 | 污视频在线 | 一级特黄aa大片免费播放 | 手机在线观看av网站 | 日韩中文在线字幕 | 黄网免费在线观看 | 黄a免费网络 | 一级黄色录像大片 | 国产成人精品久久 | 一区二区在线观看免费视频 | 天天看夜夜爽 | 亚洲成人国产精品 |