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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Keras.preprocessing.sequence 處理字符而不是單詞?

為什么 Keras.preprocessing.sequence 處理字符而不是單詞?

浮云間 2023-09-12 16:53:38
pad_sequences我正在致力于將語音轉(zhuǎn)錄為文本,并在 Keras 中使用時遇到了問題(我認(rèn)為) 。我預(yù)訓(xùn)練了一個在數(shù)據(jù)幀上使用的模型pad_sequences,它將數(shù)據(jù)放入一個數(shù)組中,每個值的列數(shù)和行數(shù)都相同。然而,當(dāng)我用于pad_sequences轉(zhuǎn)錄文本時,該語音字符串中的字符數(shù)就是作為 numpy 數(shù)組返回的行數(shù)。假設(shè)我有一個包含 4 個字符的字符串,那么它將返回一個4 X 500Numpy 數(shù)組。對于 6 個字符的字符串,它將返回6 X 500Numpy 數(shù)組等。我的澄清代碼:import speech_recognition as srimport pyaudioimport pandas as pdfrom helperFunctions import *jurors = ['Zack', 'Ben']storage = []storage_df = pd.DataFrame()while len(storage) < len(jurors):    print('Juror' + ' ' + jurors[len(storage)] + ' ' + 'is speaking:')    init_rec = sr.Recognizer()    with sr.Microphone() as source:        audio_data = init_rec.adjust_for_ambient_noise(source)        audio_data = init_rec.listen(source) #each juror speaks for 10 seconds        audio_text = init_rec.recognize_google(audio_data)        print('End of juror' + ' ' + jurors[len(storage)] + ' ' + 'speech')        storage.append(audio_text)        cleaned = clean_text(audio_text)        tokenized = tokenize_text(cleaned)        padded_text = padding(cleaned, tokenized) #fix padded text elongating rows我使用輔助函數(shù)腳本:def clean_text(text, stem=False):    text_clean = '@\S+|https?:\S|[^A-Za-z0-9]+'    text = re.sub(text_clean, ' ', str(text).lower()).strip()    #text = tf.strings.substr(text, 0, 300) #restrict text size to 300 chars    return textdef tokenize_text(text):    tokenizer = Tokenizer()    tokenizer.fit_on_texts(text)    return tokenizerdef padding(text, tokenizer):    text = pad_sequences(tokenizer.texts_to_sequences(text),                        maxlen = 500)    return text返回的文本將被輸入到預(yù)先訓(xùn)練的模型中,我非常確定不同長度的行會導(dǎo)致問題。
查看完整描述

1 回答

?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊

的Tokenizer方法例如fit_on_texts或texts_to_sequences期望文本/字符串列表作為輸入(顧名思義,即texts)。但是,您將單個文本/字符串傳遞給它們,因此它會迭代其字符,同時假設(shè)它實際上是一個列表!


解決此問題的一種方法是在每個函數(shù)的開頭添加檢查,以確保輸入數(shù)據(jù)類型實際上是列表。例如:


def padding(text, tokenizer):

    if isinstanceof(text, str):

        text = [text]

    # the rest would not change...

您還應(yīng)該為該tokenize_text函數(shù)執(zhí)行此操作。進行此更改后,您的自定義函數(shù)將同時適用于單個字符串和字符串列表。


作為重要的旁注,如果您在問題中放入的代碼屬于預(yù)測階段,則存在一個基本錯誤:您應(yīng)該使用訓(xùn)練模型時使用的相同實例,以確保完成映射和標(biāo)記Tokenizer化與訓(xùn)練階段相同。實際上,為每個或所有測試樣本創(chuàng)建一個新實例是沒有意義的Tokenizer(除非它具有與訓(xùn)練階段使用的相同的映射和配置)。


查看完整回答
反對 回復(fù) 2023-09-12
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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