私は幾何学的な(算術とは対照的に)ニューラルネットを構築するプロジェクトに取り組んでいます。伝達関数を構成するには、算術和の代わりに幾何学的な和を使用したいと思います。幾何行列の乗算
、物事をより明確にするために、私はコードで記述するつもりです:あなたが見ることができるように
def arithmetic_matrix_multiplication(matrix1, matrix2):
new_matrix = np.zeros(len(matrix1),len(matrix2[0]))
for i in range(len(matrix1)):
for j in range(len(matrix2[0])):
for k in range(len(matrix2)):
new_matrix[i][j] += matrix1[i][k]*matrix2[k][j]
return new_matrix
def geometric_matrix_multiplication(matrix1, matrix2):
new_matrix = np.ones(len(matrix1),len(matrix2[0]))
for i in range(len(matrix1)):
for j in range(len(matrix2[0])):
for k in range(len(matrix2)):
new_matrix[i][j] *= matrix1[i][k]*matrix2[k][j]
return new_matrix
、それはかなり最小限の変更です。唯一の問題は、私が上記の算術コード(実際にはnumpy.dot
を使用します)を実際に記述して使用することはないと同じように、上記の幾何学的コードを実際に使用するのは本当に好きではないということです。幾何学的結果を得るためにnumpyの行列乗算を利用する方法はありますか?私は1つを考えることができませんでしたが、私は上記の解決策を過ぎて明白なものは見つけられませんでした。これは最適ではありません。
書かれたように、あなたの幾何学的な結果は常にゼロ行列で(zero'が漠然とnp.zeros' ''のように振る舞うと仮定した場合)ではないでしょうか?代わりに1から始めるべきですか? – DSM
@DSM Ah、whoops。あなたはまったく正しい。 –
すべての要素が> 0であることは十分に幸いですか?もちろん、@ DSM Lol – DSM