2025/8/16の研究ログ
from DCASEのベースラインを動かす_ログ
2025/8/16の研究ログ
エラーの解消中
なんとか今日中に訓練を動かしたい!
RuntimeError: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(...) instead.
traceback.print_exc()したが,芳しくない
表示が同じだった
もう少し細かいエラーがみたい
GPTに相談すると,tensor.view()が良くないと言う
そりゃあエラー文を見れば分かる
問題はそれがどこかよく分からないこと
Github Copilotにも聞くと,CRNN.pyに問題の部分があるらしい
forwardの部分
確かにview()の前にreshape()がない箇所が二つあった
修正したが問題は解消されない
問題は別にありそう?
torch.autograd.set_detect_anomaly(True)で多少表示内容を変えてもよく分からない
仮にGithubのコードは正常に動作するなら,問題が起きているのはMPS関係の修正ということ
MPS関係の修正を見直す
collate.pyは問題なさそう
Dataloaderを継承してSafeDataLoaderを定義しているところ
きちんとfloat32に変換しているように見える
CRNN.pyのpool1dは?
現在確認中
問題ないはず
他に修正した場所はあったか?
best_pathの修正
documentにも残っているっぽいし,特段問題なさそうだから元に戻す
torch.load(best_path)が空っぽで動かない
そもそもなぜloadがあるのか
一度認識を整理する
torch.fit()で学習
評価に用いるパラメータ?をtorch.load()で得る
評価する
best_pathの役割がよく分からない
torch.fit()で実はモデルを出力している?
デバッグを効率化しよう!
もう埒が開かない
デバッグの方法を根本的に見直した方が良い
breakpointとかやろうと思ったが,うまく関数の中に入っていけない
https://code.visualstudio.com/docs/debugtest/debugging
https://code.visualstudio.com/docs/python/debugging
"justMyCode": falseでいけた
一通り見たが,何がいけないのか結局分からない
安易な解決策を求めてIceCreamを導入
https://github.com/gruns/icecream
ひとまず保留
ModelCheckpointはtrain_pretrained.pyで設定していた
obj_metricが監視対象になっており,基準として働く
保存先はexp/2024_baselineみたい
見たけどversion_*ばかり
その中にも保存されていないが...
early stoppingとModelCheckpointのどちらかが正常に動けば保存されるはずだが
trainer.fit()が正常に動作していないのか?
書き込み権限がないかも
log_dir自体は作成できている
train_pretrain.pyは大丈夫そう
ls -laで見ても書き込み権限はあった
一応ckptファイルを探す
find ../../ -name "*.ckpt"
なかった
デバッガーで見てみる
おそらく,trainer.fit()が正常に動作していない
callbacksの中身を見たい
def on_save_checkpoint(self, checkpoint)が怪しい...?
どこかコメントアウトした場所があったはず
そのコードがどこか分からない
エネルギーの消費量を測るやつ
削っても問題ないと思うのだが
一応戻してから実行したいな
そもそもRuntimeErrorが治ってないので,そちらが原因だろう
学習がきちんと終わっていないのでモデルが出力されないのだと思う
直すか
メモリ上でバラバラに配置されたtensorに対し操作が行われており,エラーが出ている
とエラー文から読み取れるらしい
Geminiと相談しながら進める
テンソルの不連続性
x sed_trainer_pretrained.pyのtraining_step内に存在するloss計算にてcontiguous()を行う
strong_preds_student[strong_mask]とかがスライシングをしているとか
ブールマスクで分割,というのはTrue,Falseのどちらかで,強ラベルを持ったデータのみ抽出するなど行なっている?
配列に対して行い,メモリ上の配置がバラバラになる?
エラーは解消されない
pdbを使う > import pdb; pdb.set_trace()
cf.
ppで変数の中身を見る
code: pp_res
(Pdb) pp strong_preds_student.is_contiguous()
False
(Pdb) pp strong_preds_studentstrong_mask.is_contiguous()
False
(Pdb) pp labels.is_contiguous()
True
(Pdb) pp labelsstrong_mask.is_contiguous()
True
.contiguous()の適用前の変数がFalseなだけだと思う
原因を切り分ける
tot_loss_supervised関連だけ動かす > エラーが変わったので違いそう?
TypeError: SEDTask4.lr_scheduler_step() missing 1 required positional argument: 'metric'
sed_~def lr_scheduler_step(self, scheduler, optimizer_idx, metric)
これさっきも見たな
いつだっけ...
計算が終わっていなくて揃っていないせいかな
単純に* self.scheduler["scheduler"]._get_scaling_factor()を実行していないからかも
下のコードも順に動かす
下まで行くとRuntimeError: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(...) instead.になった
? schedulerが悪さをしているのかも
float32
batchの中身を確認した方が良いらしい
全部float32でした...
code: dtype
# 各要素のデータ型 (dtype) を確認
print(f"audio.dtype: {audio.dtype}")
print(f"labels.dtype: {labels.dtype}")
print(f"padded_indxs.dtype: {padded_indxs0.dtype}")
print(f"embeddings.dtype: {embeddings.dtype}")
print(f"valid_class_mask.dtype: {valid_class_mask.dtype}")
print("-" * 20)
# 各要素のオブジェクト型 (type) を確認
print(f"type(audio): {type(audio)}")
print(f"type(labels): {type(labels)}")
print(f"type(padded_indxs): {type(padded_indxs)}")
print(f"type(embeddings): {type(embeddings)}")
print(f"type(valid_class_mask): {type(valid_class_mask)}")
### 結果 ###
audio.dtype: torch.float32
labels.dtype: torch.float32
padded_indxs.dtype: torch.float32
embeddings.dtype: torch.float32
valid_class_mask.dtype: torch.bool
--------------------
type(audio): <class 'torch.Tensor'>
type(labels): <class 'torch.Tensor'>
type(padded_indxs): <class 'list'>
type(embeddings): <class 'torch.Tensor'>
type(valid_class_mask): <class 'torch.Tensor'>
Mixup
apply_mixup関数が怪しいらしい
.contiguous() を戻り値につける
つけたが解消されない...
MPS適応にこだわらない方がいいのでは
家のGPUで動かすのを前提に組む方が楽そう
流石に時間的に厳しくなってきた
ここら辺が引き時かな
損切りのタイミングだと思う
環境構築+データインストールの手順だけ組めばいいはず
データインストールに時間がかかるが,中断しても自動で動くようshファイルを組めば良いかな?
その間も他の作業を進めれば良いか
? やることは? > 卒論で何をどのくらい理解するか考える
Cross-Attentionで特徴量を入れ込む
補助デコーダで学習を効率化?
Confident Mean Teacherで精度向上
Conformer,MambaとGRUを入れ替える
先にモジュールの理解と実装かな
全体的に,モジュール単独の理解と実装なら手がつけられる
! MPS適応の割合を減らし,他の理解を深めよう