問題タブ [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.
python - TypeError: zeros_like(): MLM での微調整時の引数 'input'
基本的な概要
カスタム データセットで事前トレーニングされたマスク言語モデル (Longformer
正確にはバニラ) の事前トレーニングに取り組んでいます。Huggingface のtransformers
lib を使用していますが、監視されたタスクで MLM を微調整すると、次のエラーが表示されます:-
現在、これはおそらくモデルに与えられた入力に起因しているようです。Huggingface は直接datasets
オブジェクトを処理するようにアップグレードされ、以前の BPE クラスは廃止されました。
私のデータについては、両方の配列train
とvalidation
NumPy 配列を 2 つの別々のファイルにダンプしました。
{
---> delimiter およびsrc
andは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
関数です:
パディングと切り捨てが再び追加されます。適切なトレーニング引数の後 (トークン化されていないものではなくトークン化されたものを渡す)
これが得られます:-
これは予想外です。これについてさらに掘り下げます。