前提・実現したいこと
python初心者です。
現在、こちらのサイト(http://darden.hatenablog.com/entry/2018/04/16/204307)を参考にGoogle Colaboratoryで自前のデータを使い、多層パーセプトロンの学習を行おうと思っています。
そこで、重みと閾値の初期化を行いたいのですが、以下のエラーがでてしまいます。
そもそも”重みと閾値の初期化”の部分で何を示しているのかがわかりません。
発生している問題・エラーメッセージ
<ipython-input-4-aeaeb35e31e0> in initialize_weights(self) 32 def initialize_weights(self): 33 """重みと閾値の初期化""" ---> 34 self.w = np.random.randn(self.input_dim, self.units) * self.sigma(self.kernel_initializer, self.input_dim, self.units) 35 self.b = np.random.randn(1, self.units)*self.sigma(self.bias_initializer, self.input_dim, self.units) 36 TypeError: unsupported operand type(s) for *: 'float' and 'NoneType'
該当のソースコード
#全結合の実装 class Dense: def __init__(self, units,input_dim, kernel_initializer='he_nomal', bias_initializer='zeros'): self.units = units self.input_dim = input_dim self.kernel_initializer = kernel_initializer self.bias_initializer = bias_initializer self.w = None self.b = None self.dw = None self.db = None self.initialize_weights() def sigma(self, initializer, fan_in, fan_out): """ 重みと閾値の初期化用にガウス分布の標準偏差値を返す """ if initializer=="glorot_normal": #for sigmoid, tanh. return np.sqrt(2. / (fan_in + fan_out)) elif initializer=="he_normal": #for relu return np.sqrt(2. / fan_in) elif initializer=="lecun_normal": #for traial return np.sqrt(1. / fan_in) elif initializer=="one_nomal": #for traial return 1.0 elif initializer=="zeros": return 0.0 def initialize_weights(self): """重みと閾値の初期化""" self.w = np.random.randn(self.input_dim, self.units) * self.sigma(self.kernel_initializer, self.input_dim, self.units) self.b = np.random.randn(1, self.units)*self.sigma(self.bias_initializer, self.input_dim, self.units) def forward_prop(self, Phi): """順伝播演算""" Z = np.dot(Phi, self.w) + self.b return Z def back_prop(self, Phi,Delta): """逆伝播演算""" n_samples = Delta.shape[0] #サンプル数で割って1サンプル当たりの平均値にする self.dw = np.dot(Phi.T, Delta)/n_samples self.db = np.dot(np.ones([1, n_samples]), Delta)/n_samples dPhi = np.dot(Delta, self.w.T) return dPhi def update_weights(self, mu, n_samples): """重み・閾値アップデート""" self.w -= mu * self.dw self.b -= mu * self.db
試したこと
パラメータの初期化について調べたのですが、いまいち理解できません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/19 13:32