問題タブ [huggingface-tokenizers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
297 参照

python - TypeError: zeros_like(): MLM での微調整時の引数 'input'

基本的な概要

カスタム データセットで事前トレーニングされたマスク言語モデル (Longformer正確にはバニラ) の事前トレーニングに取り組んでいます。Huggingface のtransformerslib を使用していますが、監視されたタスクで MLM を微調整すると、次のエラーが表示されます:-

現在、これはおそらくモデルに与えられた入力に起因しているようです。Huggingface は直接datasetsオブジェクトを処理するようにアップグレードされ、以前の BPE クラスは廃止されました。

私のデータについては、両方の配列trainvalidationNumPy 配列を 2 つの別々のファイルにダンプしました。

{---> delimiter およびsrcandはtgt列です。この構造は、train ファイルと val ファイルの両方を対象としています。重要なのは、 my src= string; tgt= 番号 (数値ラベル)。これはシーケンス分類タスクです。

次にdatasets、CSV スクリプトを使用してファイルからオブジェクトを作成します。

このステップが完了しtokenizer = AutoTokenizer.from_pretrained('......')たら、トークナイザーをインポートします --> 事前トレーニング済みの言語モデルからtruncation & padding = True

コードの疑わしい部分

さて、トークン化の時間です。この方法を使用し.map()て、データセット全体にトークン化関数を適用しました。これは私のトークン化関数がどのように見えるかです:-

私がそれを適用する理由srcは、ラベルが数値であるためです。トークン化はなく、長い文字列である「X」値のみです。

これは、その関数を使用してデータセットに適用する方法です (を使用.map()):-

datasetsほとんどの場合、オブジェクトの使用方法がわからないため、これは私が台無しにした部分です。

これは私のデータセット オブジェクトがどのように見えるかです。うまくいけば、私よりもその構造を理解できるかもしれません:-

ここで、いわゆるトークン化されたデータセット ( train_encoded_dataset) を調べます:-

この後、このデータセットを次の場所に渡しますTrainer:-

上記のエラーにつながります。

どこで問題が発生したのかわかりません (トークン化は別として)。誰かがそれを指摘できますか?

Update1:メソッドを使用してデータセットを構築するfrom_dictと (numpy 配列をdatasetsオブジェクトにネイティブ変換するため)、同じエラーが発生します。

Update2:どうやら、いくつかの変更により、新しいエラーが発生しています:-これは新しいtok関数です:

パディングと切り捨てが再び追加されます。適切なトレーニング引数の後 (トークン化されていないものではなくトークン化されたものを渡す)

これが得られます:-

これは予想外です。これについてさらに掘り下げます。