哈达马乘积
注:原创不易,转载请务必注明原作者和出处,感谢支持!
一 写在开头
1.1 本文内容
机器学习中的一个小概念——哈达马乘积(Hadamard Product)及其性质。
二 哈达马乘积(Hadamard Product)
2.1 哈达马乘积定义及其性质
对于两个同为(m imes n)阶的矩阵(A)和(B),则(A)和(B)的哈达马乘积定义为:
[(A circ B)_{i,j} = (A)_{i,j}(B)_{i,j}
]
比如,这是一个哈达马乘积的实例:
[left[
egin{array}{ccc}
a_{11} & a_{12} & a_{13}\
a_{21} & a_{22} & a_{23}\
a_{31} & a_{32} & a_{33}
end{array}
ight]
circ
left[
egin{array}{ccc}
b_{11} & b_{12} & b_{13}\
b_{21} & b_{22} & b_{23}\
b_{31} & b_{32} & b_{33}
end{array}
ight]
=
left[
egin{array}{ccc}
a_{11} imes b_{11} & a_{12} imes b_{12} & a_{13} imes b_{13}\
a_{21} imes b_{21} & a_{22} imes b_{22} & a_{23} imes b_{23}\
a_{31} imes b_{31} & a_{32} imes b_{32} & a_{33} imes b_{33}
end{array}
ight]
]
注意,哈达马乘积要求矩阵(A)和(B)必须具有相同的阶。
易知,哈达马乘积具有如下的性质:
[A circ B = B circ A
]
[A circ (B circ C) = (A circ B) circ C
]
[A circ (B + C) = A circ B + A circ C
]
2.2 哈达马乘积的应用
在深度学习框架TensorFlow中有计算哈达马乘积的API——tf.multiply()。下面是在TensorFlow中的一个具体实例。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tensorflow as tf
x = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
with tf.Session() as session:
print(session.run(tf.multiply(x, x)))
'''输出结果为:
[[ 1 4 9]
[16 25 36]
[49 64 81]]
'''