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

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

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

如何在一個(gè)集成中使用多種模型的使用向?qū)?/h1>

在統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域,集成方法(ensemble method)使用多種學(xué)習(xí)算法以獲得更好的預(yù)測(cè)性能(相比單獨(dú)使用其中任何一種算法)。和統(tǒng)計(jì)力學(xué)中的統(tǒng)計(jì)集成(通常是無(wú)窮集合)不同,一個(gè)機(jī)器學(xué)習(xí)集成僅由一個(gè)離散的可選模型的離散集合組成,但通常擁有更加靈活的結(jié)構(gòu) [1]。

使用集成的主要?jiǎng)訖C(jī)是在發(fā)現(xiàn)新的假設(shè),該假設(shè)不一定存在于構(gòu)成模型的假設(shè)空間中。從經(jīng)驗(yàn)的角度看,當(dāng)模型具有顯著的多樣性時(shí),集成方法傾向于得到更好的結(jié)果 [2]。

動(dòng)機(jī)

在一個(gè)大型機(jī)器學(xué)習(xí)競(jìng)賽的比賽結(jié)果中,最好的結(jié)果通常是由模型的集成而不是由單個(gè)模型得到的。例如,ILSVRC2015 的得分最高的單個(gè)模型架構(gòu)得到了第 13 名的成績(jī)。而第 1 到 12 名都使用了不同類型的模型集成。

我目前并沒(méi)有發(fā)現(xiàn)有任何的教程或文檔教人們?nèi)绾卧谝粋€(gè)集成中使用多種模型,因此我決定自己做一個(gè)這方面的使用向?qū)А?/p>

我將使用 Keras,具體來(lái)說(shuō)是它的功能性 API,以從相對(duì)知名的論文中重建三種小型 CNN(相較于 ResNet50、Inception 等而言)。我將在 CIFAR-10 數(shù)據(jù)集上獨(dú)立地訓(xùn)練每個(gè)模型 [3]。然后使用測(cè)試集評(píng)估每個(gè)模型。之后,我會(huì)將所有三個(gè)模型組成一個(gè)集合,并進(jìn)行評(píng)估。通常按照預(yù)期,這個(gè)集成相比單獨(dú)使用其中任何一個(gè)模型,在測(cè)試集上能獲得更好的性能。

有很多種不同類型的集成:其中一種是堆疊(stacking)。這種類型更加通用并且在理論上可以表征任何其它的集成技術(shù)。堆疊涉及訓(xùn)練一個(gè)學(xué)習(xí)算法結(jié)合多種其它學(xué)習(xí)算法的預(yù)測(cè) [1]。對(duì)于這個(gè)示例,我將使用堆疊的最簡(jiǎn)單的一種形式,其中涉及對(duì)集成的模型輸出取平均值。由于取平均過(guò)程不包含任何參數(shù),這種集成不需要訓(xùn)練(只需要訓(xùn)練模型)。

如何在一個(gè)集成中使用多種模型的使用向?qū)? src=

本文介紹的集成的簡(jiǎn)要結(jié)構(gòu)

準(zhǔn)備數(shù)據(jù)

首先,導(dǎo)入類和函數(shù):

  1. fromkeras.modelsimportModel,Input

  2. fromkeras.layersimportConv2D,MaxPooling2D,GlobalAveragePooling2D,Activation,Average,Dropout

  3. fromkeras.utilsimportto_categorical

  4. fromkeras.lossesimportcategorical_crossentropy

  5. fromkeras.callbacksimportModelCheckpoint,TensorBoard

  6. fromkeras.optimizersimportAdam

  7. fromkeras.datasetsimportcifar10

  8. importnumpyasnp

我使用的數(shù)據(jù)集是 CIFAR-10,因?yàn)楹苋菀渍业皆谶@個(gè)數(shù)據(jù)集上工作得很好的架構(gòu)的相關(guān)論文。使用一個(gè)流行的數(shù)據(jù)集還可以令這個(gè)案例容易復(fù)現(xiàn)。

以下是數(shù)據(jù)集的導(dǎo)入代碼。訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)都已經(jīng)歸一化。訓(xùn)練標(biāo)簽向量被轉(zhuǎn)換成一個(gè) one-hot 矩陣。不需要轉(zhuǎn)換測(cè)試標(biāo)簽向量,因?yàn)樗粫?huì)在訓(xùn)練中使用。

  1. (x_train, y_train), (x_test, y_test) = cifar10.load_data()

  2. x_train = x_train /255.

  3. x_test = x_test /255.

  4. y_train = to_categorical(y_train, num_classes=10)

數(shù)據(jù)集由 6 萬(wàn)張 10 個(gè)類別的 32x32 的 RGB 圖像組成。其中 5 萬(wàn)張用于訓(xùn)練/驗(yàn)證,其它 1 萬(wàn)張用于測(cè)試。

  1. print('x_train shape: {} |

  2. y_train shape: {}\nx_test shape : {} |

  3. y_test shape : {}'.format(x_train.shape, y_train.shape, x_test.shape, y_test.shape))

>>> x_train shape: (50000, 32, 32, 3) | y_train shape: (50000, 10)

>>> x_test shape : (10000, 32, 32, 3) | y_test shape : (10000, 1)

由于三個(gè)模型使用的是相同類型的數(shù)據(jù),定義單個(gè)用于所有模型的輸入層是合理的。

  1. input_shape = x_train[0,:,:,:].shape

  2. model_input =Input(shape=input_shape)

第一個(gè)模型:ConvPool-CNN-C

第一個(gè)將要訓(xùn)練的模型是 ConvPool-CNN-C[4]。它使用了常見(jiàn)的模式,即每個(gè)卷積層連接一個(gè)池化層。唯一一個(gè)對(duì)一些人來(lái)說(shuō)可能不熟悉的細(xì)節(jié)是其最后的層。它使用的并不是多個(gè)全連接層,而是一個(gè)全局平均池化層(global average pooling layer)。

以下是關(guān)于全局池化層的工作方式的簡(jiǎn)介。最后的卷積層 Conv2D(10,(1,1)) 輸出和 10 個(gè)輸出類別相關(guān)的 10 個(gè)特征圖。然后 GlobalAveragePooling2D() 層計(jì)算這 10 個(gè)特征圖的空間平均(spatial average),意味著其輸出是一個(gè)維度為 10 的向量。之后,對(duì)這個(gè)向量應(yīng)用一個(gè) softmax 激活函數(shù)。如你所見(jiàn),這個(gè)方法在某種程度上類似于在模型的頂部使用全連接層??梢栽谶@篇論文 [5] 中查看更多關(guān)于全局池化層的內(nèi)容。

重要事項(xiàng):不要對(duì)最后的 Conv2D(10,(1,1)) 層的輸出直接應(yīng)用激活函數(shù),因?yàn)檫@個(gè)層的輸出需要先輸入 GlobalAveragePooling2D()。

  1. defconv_pool_cnn(model_input):

  2. x =Conv2D(96, kernel_size=(3,3), activation='relu', padding = 'same')(model_input)

  3. x =Conv2D(96, (3,3), activation='relu', padding ='same')(x)

  4. x =Conv2D(96, (3,3), activation='relu', padding ='same')(x)

  5. x =MaxPooling2D(pool_size=(3,3), strides =2)(x)

  6. x =Conv2D(192, (3,3), activation='relu', padding ='same')(x)

  7. x =Conv2D(192, (3,3), activation='relu', padding ='same')(x)

  8. x =Conv2D(192, (3,3), activation='relu', padding ='same')(x)

  9. x =MaxPooling2D(pool_size=(3,3), strides =2)(x)

  10. x =Conv2D(192, (3,3), activation='relu', padding ='same')(x)

  11. x =Conv2D(192, (1,1), activation='relu')(x)

  12. x =Conv2D(10, (1,1))(x)

  13. x =GlobalAveragePooling2D()(x)

  14. x =Activation(activation='softmax')(x)

  15. model =Model(model_input, x, name='conv_pool_cnn')

  16. returnmodel

用具體例子解釋該模型

  1. conv_pool_cnn_model = conv_pool_cnn(model_input)

為了簡(jiǎn)單起見(jiàn),每個(gè)模型都使用相同的參數(shù)進(jìn)行編譯和訓(xùn)練。其中,epoch 數(shù)等于 20、批尺寸等于 32(每個(gè) epoch 進(jìn)行 1250 次迭代)的參數(shù)設(shè)置能使三個(gè)模型都找到局部極小值。隨機(jī)選擇訓(xùn)練集的 20% 作為驗(yàn)證集。

  1. defcompile_and_train(model, num_epochs):

  2. model.compile(loss=categorical_crossentropy, optimizer=Adam(), metrics=['acc'])

  3. filepath ='weights/'+ model.name +'.{epoch:02d}-{loss:.2f}.hdf5'

  4. checkpoint =ModelCheckpoint(filepath, monitor='loss', verbose=0, save_weights_only=True, save_best_only=True, mode='auto', period=1)

  5. tensor_board =TensorBoard(log_dir='logs/', histogram_freq=0, batch_size=32)

  6. history = model.fit(x=x_train, y=y_train, batch_size=32, epochs=num_epochs, verbose=1, callbacks=[checkpoint, tensor_board], validation_split=0.2)

  7. returnhistory

大約需要每 epoch1 分鐘的時(shí)間訓(xùn)練這個(gè)(以及下一個(gè))模型,我們使用了單個(gè) Tesla K80 GPU。如果你使用的是 CPU,可能需要花較多的時(shí)間。

  1. _ = compile_and_train(conv_pool_cnn_model, num_epochs=20)

該模型達(dá)到了大約 79% 的驗(yàn)證準(zhǔn)確率。

如何在一個(gè)集成中使用多種模型的使用向?qū)? src=

ConvPool-CNN-C 驗(yàn)證準(zhǔn)確率和損失

通過(guò)計(jì)算測(cè)試集的誤差率對(duì)模型進(jìn)行評(píng)估。

  1. defevaluate_error(model):

  2. pred=model.predict(x_test,batch_size=32)

  3. pred=np.argmax(pred,axis=1)

  4. pred=np.expand_dims(pred,axis=1)# make same shape as y_test

  5. error=np.sum(np.not_equal(pred,y_test))/y_test.shape[0]

  6. returnerror

  7. evaluate_error(conv_pool_cnn_model)

>>> 0.2414

第二個(gè)模型:ALL-CNN-C

下一個(gè)模型,ALL-CNN-C,來(lái)自同一篇論文 [4]。這個(gè)模型和上一個(gè)很類似。唯一的區(qū)別是用步幅為 2 的卷積層取代了最大池化層。再次,需要注意,在 Conv2D(10,(1,1)) 層之后不要立刻應(yīng)用激活函數(shù),如果在該層之后應(yīng)用了 ReLU 激活函數(shù),會(huì)導(dǎo)致訓(xùn)練失敗。

  1. defall_cnn(model_input):

  2. x=Conv2D(96,kernel_size=(3,3),activation='relu',padding='same')(model_input)

  3. x=Conv2D(96,(3,3),activation='relu',padding='same')(x)

  4. x=Conv2D(96,(3,3),activation='relu',padding='same',strides=2)(x)

  5. x=Conv2D(192,(3,3),activation='relu',padding='same')(x)

  6. x=Conv2D(192,(3,3),activation='relu',padding='same')(x)

  7. x=Conv2D(192,(3,3),activation='relu',padding='same',strides=2)(x)

  8. x=Conv2D(192,(3,3),activation='relu',padding='same')(x)

  9. x=Conv2D(192,(1,1),activation='relu')(x)

  10. x=Conv2D(10,(1,1))(x)

  11. x=GlobalAveragePooling2D()(x)

  12. x=Activation(activation='softmax')(x)

  13. model=Model(model_input,x,name='all_cnn')

  14. returnmodel

  15. all_cnn_model=all_cnn(model_input)

  16. _=compile_and_train(all_cnn_model,num_epochs=20)

該模型收斂到了大約 75% 的驗(yàn)證準(zhǔn)確率。

如何在一個(gè)集成中使用多種模型的使用向?qū)? src=

ConvPool-CNN-C 驗(yàn)證準(zhǔn)確率和損失

由于這兩個(gè)模型很相似,誤差率差別不大。

  1. evaluate_error(all_cnn_model)

>>> 0.26090000000000002

第三個(gè)模型:Network In Network CNN

第三個(gè) CNN 是 Network In Network CNN[5]。這個(gè)模型來(lái)自引入了全局池化層的論文。它比之前的兩個(gè)模型更小,因此其訓(xùn)練速度更快。(再提醒一次,不要在最后的卷積層之后使用 ReLU 函數(shù)?。?/p>

相較于在 MLP 卷積層中使用多層感知機(jī),我使用的是 1x1 卷積核的卷積層。從而需要優(yōu)化的參數(shù)變得更少,訓(xùn)練速度進(jìn)一步加快,并且還獲得了更好的結(jié)果(當(dāng)使用全連接層的時(shí)候無(wú)法獲得高于 50% 的驗(yàn)證準(zhǔn)確率)。該論文中稱,MLP 卷積層中應(yīng)用的函數(shù)等價(jià)于在普通卷積層上的級(jí)聯(lián)跨通道參數(shù)化池化(cascaded cross channel parametric pooling),其中依次等價(jià)于一個(gè) 1x1 卷積核的卷積層。如果這個(gè)結(jié)論有錯(cuò)誤,歡迎指正。

  1. defnin_cnn(model_input):

  2. #mlpconv block 1

  3. x=Conv2D(32,(5,5),activation='relu',padding='valid')(model_input)

  4. x=Conv2D(32,(1,1),activation='relu')(x)

  5. x=Conv2D(32,(1,1),activation='relu')(x)

  6. x=MaxPooling2D((2,2))(x)

  7. x=Dropout(0.5)(x)

  8. #mlpconv block2

  9. x=Conv2D(64,(3,3),activation='relu',padding='valid')(x)

  10. x=Conv2D(64,(1,1),activation='relu')(x)

  11. x=Conv2D(64,(1,1),activation='relu')(x)

  12. x=MaxPooling2D((2,2))(x)

  13. x=Dropout(0.5)(x)

  14. #mlpconv block3

  15. x=Conv2D(128,(3,3),activation='relu',padding='valid')(x)

  16. x=Conv2D(32,(1,1),activation='relu')(x)

  17. x=Conv2D(10,(1,1))(x)

  18. x=GlobalAveragePooling2D()(x)

  19. x=Activation(activation='softmax')(x)

  20. model=Model(model_input,x,name='nin_cnn')

  21. returnmodel

  22. nin_cnn_model=nin_cnn(model_input)

這個(gè)模型的訓(xùn)練速度快得多,在我的機(jī)器上每個(gè) epoch 只要 15 秒就能完成。

  1. _=compile_and_train(nin_cnn_model,num_epochs=20)

該模型達(dá)到了大約 65% 的驗(yàn)證準(zhǔn)確率。

如何在一個(gè)集成中使用多種模型的使用向?qū)? src=

NIN-CNN 驗(yàn)證準(zhǔn)確率和損失

這個(gè)模型比之前的兩個(gè)模型簡(jiǎn)單得多,因此其誤差率要高一點(diǎn)。

  1. evaluate_error(nin_cnn_model)

>>> 0. 0.31640000000000001

三個(gè)模型的集成

現(xiàn)在將這三個(gè)模型組合成一個(gè)集成。

所有三個(gè)模型都被重新實(shí)例化并加載了最佳的已保存權(quán)重。

  1. conv_pool_cnn_model=conv_pool_cnn(model_input)

  2. all_cnn_model=all_cnn(model_input)

  3. nin_cnn_model=nin_cnn(model_input)

  4. conv_pool_cnn_model.load_weights('weights/conv_pool_cnn.29-0.10.hdf5')

  5. all_cnn_model.load_weights('weights/all_cnn.30-0.08.hdf5')

  6. nin_cnn_model.load_weights('weights/nin_cnn.30-0.93.hdf5')

  7. models=[conv_pool_cnn_model,all_cnn_model,nin_cnn_model]

集成模型的定義是很直接的。它使用了所有模型共享的輸入層。在頂部的層中,該集成通過(guò)使用 Average() 合并層計(jì)算三個(gè)模型輸出的平均值。

  1. defensemble(models,model_input):

  2. outputs=[model.outputs[0]formodelinmodels]

  3. y=Average()(outputs)

  4. model=Model(model_input,y,name='ensemble')

  5. returnmodel

  6. ensemble_model=ensemble(models,model_input)

不出所料,相比于任何單一模型,集成有著更低的誤差率。

  1. evaluate_error(ensemble_model)

>>> 0.2049

其他可能的集成

為了完整性,我們可以查看由兩個(gè)模型組合組成的集成的性能。相比于單一模型,前者有更低的誤差率。

  1. pair_A=[conv_pool_cnn_model,all_cnn_model]

  2. pair_B=[conv_pool_cnn_model,nin_cnn_model]

  3. pair_C=[all_cnn_model,nin_cnn_model]

  4. pair_A_ensemble_model=ensemble(pair_A,model_input)

  5. evaluate_error(pair_A_ensemble_model)

>>> 0.21199999999999999

  1. pair_B_ensemble_model=ensemble(pair_B,model_input)

  2. evaluate_error(pair_B_ensemble_model)

>>> 0.22819999999999999

  1. pair_C_ensemble_model=ensemble(pair_C,model_input)

  2. evaluate_error(pair_C_ensemble_model)

>>>0.2447

結(jié)論

重申一下介紹中的內(nèi)容:每個(gè)模型有其自身的缺陷。使用集成背后的原因是通過(guò)堆疊表征了關(guān)于數(shù)據(jù)的不同假設(shè)的不同模型,我們可以找到一個(gè)更好的假設(shè),它不在一個(gè)從其構(gòu)建集成的模型的假設(shè)空間之中。

與在大多數(shù)情況下使用單個(gè)模型相比,使用一個(gè)非?;A(chǔ)的集成實(shí)現(xiàn)了更低的誤差率。這證明了集成的有效性。

當(dāng)然,在使用集成處理你的機(jī)器學(xué)習(xí)任務(wù)時(shí),需要牢記一些實(shí)際的考慮。由于集成意味著同時(shí)堆棧多個(gè)模型,這也意味著輸入數(shù)據(jù)需要前向傳播到每個(gè)模型。這增加了需要被執(zhí)行的計(jì)算量,以及最終的評(píng)估(預(yù)測(cè))時(shí)間。如果你在研究或 Kaggle 競(jìng)賽中使用集成,增加的評(píng)估時(shí)間并不重要,但是在設(shè)計(jì)一個(gè)商業(yè)化產(chǎn)品時(shí)卻非常關(guān)鍵。另一個(gè)考慮是最后的模型增加的大小,它會(huì)再次成為商業(yè)化產(chǎn)品中集成使用的限制性因素。

參考文獻(xiàn)

1. Ensemble Learning. (n.d.). In Wikipedia. Retrieved December 12, 2017, from https://en.wikipedia.org/wiki/Ensemble_learning

2. D. Opitz and R. Maclin (1999)「Popular Ensemble Methods: An Empirical Study」, Volume 11, pages 169–198 (http://jair.org/papers/paper614.html)

3. Learning Multiple Layers of Features from Tiny Images, Alex Krizhevsky, 2009.

4. Striving for Simplicity: The All Convolutional Net:arXiv:1412.6806v3 [cs.LG]

5. Network In Network:arXiv:1312.4400v3 [cs.NE]


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

    關(guān)注

    1

    文章

    176

    瀏覽量

    30191
  • keras
    +關(guān)注

    關(guān)注

    2

    文章

    20

    瀏覽量

    6077

原文標(biāo)題:如何使用Keras集成多個(gè)卷積網(wǎng)絡(luò)并實(shí)現(xiàn)共同預(yù)測(cè)

文章出處:【微信號(hào):gh_ecbcc3b6eabf,微信公眾號(hào):人工智能和機(jī)器人研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何在智能手機(jī)系統(tǒng)中使用bq27505

    電子發(fā)燒友網(wǎng)站提供《如何在智能手機(jī)系統(tǒng)中使用bq27505.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 10:21 ?0次下載
    如<b class='flag-5'>何在</b>智能手機(jī)系統(tǒng)<b class='flag-5'>中使</b>用bq27505

    何在MSP430?MCU中使用智能模擬組合

    電子發(fā)燒友網(wǎng)站提供《如何在MSP430?MCU中使用智能模擬組合.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:19 ?0次下載
    如<b class='flag-5'>何在</b>MSP430?MCU<b class='flag-5'>中使</b>用智能模擬組合

    何在反向降壓-升壓拓?fù)?b class='flag-5'>中使用TPS6290x

    電子發(fā)燒友網(wǎng)站提供《如何在反向降壓-升壓拓?fù)?b class='flag-5'>中使用TPS6290x.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 10:07 ?0次下載
    如<b class='flag-5'>何在</b>反向降壓-升壓拓?fù)?b class='flag-5'>中使</b>用TPS6290x

    何在汽車CAN應(yīng)用中使用負(fù)邊緣觸發(fā)觸發(fā)器節(jié)省電力

    電子發(fā)燒友網(wǎng)站提供《如何在汽車CAN應(yīng)用中使用負(fù)邊緣觸發(fā)觸發(fā)器節(jié)省電力.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 10:06 ?0次下載
    如<b class='flag-5'>何在</b>汽車CAN應(yīng)用<b class='flag-5'>中使</b>用負(fù)邊緣觸發(fā)觸發(fā)器節(jié)省電力

    何在新興的低軌衛(wèi)星應(yīng)用中使用數(shù)字隔離器隔離信號(hào)

    電子發(fā)燒友網(wǎng)站提供《如何在新興的低軌衛(wèi)星應(yīng)用中使用數(shù)字隔離器隔離信號(hào).pdf》資料免費(fèi)下載
    發(fā)表于 09-12 09:37 ?0次下載
    如<b class='flag-5'>何在</b>新興的低軌衛(wèi)星應(yīng)用<b class='flag-5'>中使</b>用數(shù)字隔離器隔離信號(hào)

    將amc1200 SPICE模型轉(zhuǎn)成PSPICE模型后 無(wú)法在ORCAD16.5中使用,為什么?

    我按TI提供之文件 [ 在PSpice中使用Spice模型 ]將amc1200之SPICE模型轉(zhuǎn)成PSPICE模型后卻無(wú)法在ORCAD16.5中使
    發(fā)表于 08-29 07:25

    何在RTOS中使用spi_interface.c?

    何在 RTOS 中使用 spi_interface.c?
    發(fā)表于 07-10 06:29

    請(qǐng)問(wèn)cmakelists中的變量如何在程序中使用?

    大家好, 我有個(gè)問(wèn)題請(qǐng)教,cmakelists.txt中的變量如何在程序中使用?比如以下cmakelists.txt文件中的PROJECT_VER變量,我如何在c程序
    發(fā)表于 06-11 07:34

    工業(yè)計(jì)算機(jī)是什么?如何在不同行業(yè)中使用?

    工業(yè)電腦是專為在工業(yè)環(huán)境中使用而設(shè)計(jì)的計(jì)算機(jī)。它們可用于各個(gè)行業(yè),包括制造、運(yùn) 輸和能源。它們通常比普通計(jì)算機(jī)更強(qiáng)大,并且能夠在大多數(shù)計(jì)算機(jī)無(wú)法運(yùn)行的環(huán)境中運(yùn)行。在本文中,我們將更深入地了解什么是工業(yè)計(jì)算機(jī)以及它們?nèi)?b class='flag-5'>何在不同行業(yè)中使
    的頭像 發(fā)表于 04-01 15:45 ?726次閱讀
    工業(yè)計(jì)算機(jī)是什么?如<b class='flag-5'>何在</b>不同行業(yè)<b class='flag-5'>中使</b>用?

    包含具有多種類型信息的3D模型

    、安全和高效的建筑系統(tǒng),讓居住者能夠擁有可持續(xù)、彈性舒適且符合人體工程學(xué)的建筑。建筑信息模型 (BIM) 是建筑工程師在建筑物和其他結(jié)構(gòu)設(shè)計(jì)中使用的種3D建模過(guò)程。BIM軟件提供了
    發(fā)表于 03-28 17:18

    何在測(cè)試中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大會(huì) 上分享了他如何在測(cè)試中使用 ChatGPT。
    的頭像 發(fā)表于 02-20 13:57 ?711次閱讀

    何在DAVE IDE中使用XMC7200?

    能否在 DAVE IDE 中為 XMC 7200 EVK KIT 構(gòu)建應(yīng)用程序。我嘗試打開(kāi)個(gè)項(xiàng)目但它最多只能顯示 XMC48000。如何在 DAVE IDE 中使用 XMC7200
    發(fā)表于 01-26 06:32

    何在ModustoolBox中使用XMC4000系列庫(kù)?

    我發(fā)現(xiàn) BSP Assistant 只能用于 XMC7000 系列,但我使用的是 XMC4000 系列。 如何在 ModustoolBox 中使用 XMC4000 系列庫(kù)?
    發(fā)表于 01-24 06:16

    何在Linux中使用htop命令

    本文介紹如何在 Linux 中使用 htop 命令。
    的頭像 發(fā)表于 12-04 14:45 ?1831次閱讀
    如<b class='flag-5'>何在</b>Linux<b class='flag-5'>中使</b>用htop命令

    何在PyTorch中使用擴(kuò)散模型生成圖像

    除了頂尖的圖像質(zhì)量,擴(kuò)散模型還帶來(lái)了許多其他好處,包括不需要對(duì)抗性訓(xùn)練。對(duì)抗訓(xùn)練的困難是有據(jù)可查的。在訓(xùn)練效率的話題上,擴(kuò)散模型還具有可伸縮性和并行性的額外好處。
    發(fā)表于 11-22 15:51 ?452次閱讀
    如<b class='flag-5'>何在</b>PyTorch<b class='flag-5'>中使</b>用擴(kuò)散<b class='flag-5'>模型</b>生成圖像