ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

DeprecationWarning: scipy.sin is deprecated and will be removed in SciPy 2.0.0

DeprecationWarning

このエラーはscipy.sinが非推奨(deprecated)であり、将来のSciPyバージョンでは削除される可能性があることを示しています。 例えば、Python でtransformerのPositional encodingのコードです。

%matplotlib inline
import numpy as np
from scipy import sin, cos

max_length = 20 # 時間次元
dmodel = 50 # 単語埋め込みの次元

PE_mat = np.zeros((max_length, dmodel))

for pos in range(max_length):
    for i in range(dmodel):
        if i%2==0: #偶数番目
            PE = sin(pos/10000**(2*i/dmodel))
        else: #奇数番目
            PE = cos(pos/10000**(2*i/dmodel))
        PE_mat[pos, i] = PE

この時、次のようなWarningが発生します。

: DeprecationWarning: scipy.sin is deprecated and will be removed in SciPy 2.0.0, use numpy.sin instead
  PE = sin(pos/10000**(2*i/dmodel))
DeprecationWarning: scipy.cos is deprecated and will be removed in SciPy 2.0.0, use numpy.cos instead
  PE = cos(pos/10000**(2*i/dmodel))

対応策

対応策は簡単です。PE = np.sin(pos / 10000 ** (2 * i / dmodel))のようにnumpyを使ってあげれば解決です。

youtu.be

深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版 (EXAMPRESS) [ 一般社団法人日本ディープラーニング協会 ]

価格:3,080円
(2023/8/16 20:42時点)
感想(5件)