第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何讓數(shù)據(jù)生成器更有效率?

如何讓數(shù)據(jù)生成器更有效率?

墨色風(fēng)雨 2022-12-14 17:38:07
為了訓(xùn)練神經(jīng)網(wǎng)絡(luò),我修改了在 YouTube 上找到的一段代碼。它看起來(lái)如下:def data_generator(samples, batch_size, shuffle_data = True, resize=224):  num_samples = len(samples)  while True:    random.shuffle(samples)    for offset in range(0, num_samples, batch_size):      batch_samples = samples[offset: offset + batch_size]      X_train = []      y_train = []      for batch_sample in batch_samples:        img_name = batch_sample[0]        label = batch_sample[1]        img = cv2.imread(os.path.join(root_dir, img_name))        #img, label = preprocessing(img, label, new_height=224, new_width=224, num_classes=37)        img = preprocessing(img, new_height=224, new_width=224)        label = my_onehot_encoded(label)        X_train.append(img)        y_train.append(label)      X_train = np.array(X_train)      y_train = np.array(y_train)      yield X_train, y_train現(xiàn)在,我嘗試使用此代碼訓(xùn)練神經(jīng)網(wǎng)絡(luò),訓(xùn)練樣本大小為 105.000(圖像文件包含 37 種可能性中的 8 個(gè)字符、AZ、0-9 和空格)。我使用了相對(duì)較小的批次大?。?2,我認(rèn)為這已經(jīng)太小了)來(lái)提高效率,但是訓(xùn)練第一個(gè)時(shí)期的四分之一卻花了很長(zhǎng)時(shí)間(我每個(gè)時(shí)期有 826 步,花了 90 分鐘199 步... steps_per_epoch = num_train_samples // batch_size)。數(shù)據(jù)生成器中包含以下功能:def shuffle_data(data):  data=random.shuffle(data)  return data我不認(rèn)為我們可以使這個(gè)函數(shù)更有效或?qū)⑺鼜纳善髦信懦?。def preprocessing(img, new_height, new_width):  img = cv2.resize(img,(new_height, new_width))  img = img/255  return img為了預(yù)處理/調(diào)整數(shù)據(jù)大小,我使用此代碼將圖像設(shè)置為唯一大小,例如 (224, 224, 3)。我認(rèn)為,生成器的這一部分花費(fèi)的時(shí)間最多,但我看不到將其從生成器中排除的可能性(因?yàn)槿绻覀冊(cè)谂沃庹{(diào)整圖像的大小,我的內(nèi)存將滿)。#One Hot Encoding of the Labelsfrom numpy import argmax# define input string我認(rèn)為,在這一部分中,可能有一種方法可以提高效率。我正在考慮從生成器中排除此代碼并在生成器外部生成數(shù)組 y_train,這樣生成器就不必每次都對(duì)標(biāo)簽進(jìn)行熱編碼。你怎么看?還是我應(yīng)該采用完全不同的方法?
查看完整描述

1 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

我發(fā)現(xiàn)你的問(wèn)題非常有趣,因?yàn)槟阒惶峁┝司€索。所以這是我的調(diào)查。

使用您的代碼片段,我在 YouTube 上找到了GitHub 存儲(chǔ)庫(kù)和 3 部分視頻教程,主要關(guān)注在 Python 中使用生成器函數(shù)的好處。數(shù)據(jù)基于這個(gè) kaggle(我建議檢查該問(wèn)題的不同內(nèi)核,以將您已經(jīng)嘗試過(guò)的方法與另一個(gè) CNN 網(wǎng)絡(luò)進(jìn)行比較,并查看正在使用的 API)。

您不需要從頭開(kāi)始編寫數(shù)據(jù)生成器,雖然這并不難,但是發(fā)明輪子效率不高。

盡管如此,為了解決 kaggle 的任務(wù),該模型只需要感知單個(gè)圖像,因此該模型是一個(gè)簡(jiǎn)單的深度 CNN。但據(jù)我了解,您將 8 個(gè)隨機(jī)字符(類別)組合到一張圖像中以一次識(shí)別多個(gè)類別。對(duì)于該任務(wù),您需要 R-CNN 或 YOLO 作為模型。我最近剛剛為自己打開(kāi)了YOLO v4,可以讓它非??焖俚赜糜谔囟ㄈ蝿?wù)。

關(guān)于您的設(shè)計(jì)和代碼的一般建議。

  • 確保庫(kù)使用 GPU。它節(jié)省了很多時(shí)間。(盡管我在 CPU 上非常快地重復(fù)了存儲(chǔ)庫(kù)中的花實(shí)驗(yàn)——大約 10 分鐘,但結(jié)果預(yù)測(cè)并不比隨機(jī)猜測(cè)好多少。所以完整的訓(xùn)練需要大量的 CPU 時(shí)間。)

  • 比較不同的版本以找到瓶頸。嘗試包含 48 張圖像(每個(gè)類 1 張)的數(shù)據(jù)集,增加每個(gè)類的圖像數(shù)量,然后進(jìn)行比較??s小圖像尺寸,改變模型結(jié)構(gòu)等。

  • 在小的人工數(shù)據(jù)上測(cè)試全新模型以證明想法或使用迭代過(guò)程,從可以轉(zhuǎn)換為您的任務(wù)(手寫識(shí)別?)的項(xiàng)目開(kāi)始。


查看完整回答
反對(duì) 回復(fù) 2022-12-14
  • 1 回答
  • 0 關(guān)注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)