夕湖津のブログ -2ページ目

夕湖津のブログ

問題解決に役立つ情報の提供を目指します

■結論

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
os.environ["TF_ENABLE_ONEDNN_OPTS"] = "1"  #これはCPUパフォーマンス最適化用なので任意

 

■経緯

kerasで簡単な学習をさせる時に、カーネルがすぐに逝くので、

バッチサイズを減らしてみましたがだめ。

GPUを大量使用していることが分かったので、

CPUのみ使用する方法でうまくいきました。

 

※kerasのバージョンは、2.10.0

■結論

DBMS_LOB.SUBSTR(カラム名, 4000, 1)

 

例)

SELECT DBMS_LOB.SUBSTR(カラム名, 4000, 1)

FROM hoge;

 

■引数の意味

1文字目から4000文字を抽出

笑わない数学の放映を見て、コラッツ予想を考察してみました。

 

■コラッツ予想の予想

2のn乗に必ず収束することを証明すれば良い

【理由】

2のn乗に到達⇒ その後は「2で割る」ことが連続するので、必ず1に収束する

 

■考察

①Pythonで1~100までの1への収束状況をグラフ化

(1) 収束まで多く回数を要する場合、グラフはほぼ同じだった

(2) 収束まで少ない回数の場合でも、多い場合でもグラフの後半はほぼ同じ

※下記は54~57の場合。

 

 

②奇数の次は必ず偶数なので、永遠に上がり続ける状況はない

③かならず1に収束するということは、偶数が連続するようになっているはず

■結論

ADサービスでライセンスがグループ階層を下へ継承しない理由

 

【理由】

グループ用途が異なる可能性があるので、継承してしまうと意図せぬ結果を生むため

 

■例

ADのグループが下記とします。

  A

 |

  B  <-------ここにAzure Active Directory Premium P2ライセンスを割り当て

 |

  C  <-------ここには、P2ライセンスは継承されない

■GPUを使用するためのパラメータ設定

1.LightGBM

 

params = {

    …

    'device': 'gpu',

    'gpu_platform_id': 1,

    'gpu_device_id': 1,    # GPUがNVIDIAでない時は0 or 1に変更

    …

}

 

 

2.XGBoost

 

params = {

    …

    'tree_method': 'gpu_hist',

    …

}

 

 

 

■評価を何回毎に出力するか

 

1.LightGBM(3系)

 

model = lgb.train(

    …

    callbacks = [
            …
            lgb.log_evaluation(50),  #50回毎
            …

    ]

    …

)

 

 

 

2.XGBoost

 

model = xgb.train(

    …

    verbose_eval=50,  #50回毎

    …

)

 

 

■事象

llama_indexでdownload_loaderを実行すると下記INFO

(INFOですが気持ち悪い…)

 

INFO:numexpr.utils:Note: NumExpr detected 16 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8.
INFO:numexpr.utils:NumExpr defaulting to 8 threads.


■解決方法

1.もう一度実行する

2.下記コードを入れる

 

import os
os.environ["NUMEXPR_MAX_THREADS"] = "8"

■テーマ

mean_squared_log_error(MSLE)とmean_squared_error(MSE)の違い

 

■結論

以下、私なりの結論です。

通常、ディープラーニングではMSEを評価指標にするケースが多いように思えます。

しかし、外れ値の影響を薄めたい時は、MSLEの方が適切かと思います。

また、対数変換することで正規分布に近づくので統計的手法が適切になる

 

(例)お菓子価格の回帰分析⇒ MSE

(例)不動産価格の回帰分析⇒ MSLE

 

【理由1】

お菓子価格⇒ あまり外れ値が大きいとは考えにくい

不動産価格⇒ 家の価格はピンキリ

 

 

■コード例(MSEとMSLEの比較)

 

 

 

■対数変換によって正規分布に近づく様子

 

 

■間違い箇所

※間違いでないかもしれませんが、少なくともエラーが出ました。

※PyTorchのバージョンは「2.0.0+cu117」です。バージョン起因の可能性がありますが…

 

CIFAR10の読み込みと正規化

1_4_cifar10_tutorial_jp.ipynb

 

◆間違いコード

images, labels = dataiter.next()

 

↓実行結果

AttributeError                            Traceback (most recent call last)
Cell In[13], line 12
      9     plt.show()
     11 dataiter = iter(trainloader)
---> 12 images, labels = dataiter.next()
     13 # images, labels = next(dataiter)
     15 imshow(torchvision.utils.make_grid(images))

AttributeError: '_MultiProcessingDataLoaderIter' object has no attribute 'next'


◆正しい(動く)コード

images, labels = next(dataiter)

 

↓実行結果

 


 

■事象

 

 

上記のコードをWindows10のJupyter Notebookで素直に実行するとエラーになりました。

以下、要修正点です。

 

◆要修正点

1.fake_image_batch = Tensor(4, 28 * 28)

 

正:fake_image_batch = Tensor(4, 28 * 28).cuda()

 

※「cuda()」を付けないと、fake_image_batchがCPU上で、モデルがGPU上なのでエラーになります。

 

2.tensorboard --logdir .

 

正:下記です。

%load_ext tensorboard
%tensorboard --logdir ./lightning_logs