@@ -17,6 +17,15 @@ limitations under the License. */
17
17
#include " paddle/math/Vector.h"
18
18
19
19
namespace paddle {
20
+ /* *
21
+ * Cosine Similarity for CpuMatrix
22
+ *
23
+ * \param out_mat, output value, size: nSamples * 1.
24
+ * \param in1_mat, input value 1, size: nSamples * dim.
25
+ * \param in2_mat, input value 2, size: n2 * dim (n2 == 1 or n2 == nSamples).
26
+ * \param scale, default 1.0
27
+ *
28
+ */
20
29
template <>
21
30
void CosSimForward<DEVICE_TYPE_CPU>(CpuMatrix* out_mat,
22
31
const CpuMatrix* in1_mat,
@@ -48,6 +57,13 @@ void CosSimForward<DEVICE_TYPE_CPU>(CpuMatrix* out_mat,
48
57
}
49
58
50
59
/* *
60
+ * Cosine Similarity
61
+ * for each row i,
62
+ * out[i] = scale * cos(input1[i], input2[i])
63
+ * = scale * <input1[i], input2[i]>/sqrt(|input1[i]|^2 * |input2[i]|^2)
64
+ * when input2 only has one row, then for each row i,
65
+ * out[i] = cos(input1[i], input2[0])
66
+ *
51
67
* \param inputs[0] input matrix 1, size: nSamples * dim.
52
68
* \param inputs[1] input matrix 2, size: n2 * dim (n2 == 1 or n2 == nSamples).
53
69
* \param outputs[0] output matrix, size : nSamples * 1.
@@ -85,6 +101,20 @@ class CosSimForwardFunc : public FunctionBase {
85
101
real scale_;
86
102
};
87
103
104
+ /* *
105
+ * Cosine Similarity Derivative for CpuMatrix
106
+ *
107
+ * \param in1_grad forward input grad 1, size: nSamples * dim.
108
+ * \param in2_grad forward input grad 2,
109
+ * size: n2 * dim (n2 == 1 or n2 == nSamples).
110
+ *
111
+ * \param out_grad backward loss output grad, size : nSamples * 1.
112
+ * \param out_val forward output value, size: nSamples * 1.
113
+ * \param in1_val forward input value 1, size: nSamples * dim.
114
+ * \param in2_val forward input value 2,
115
+ * size: n2 * dim (n2 == 1 or n2 == nSamples).
116
+ * \param scale, default 1.0
117
+ */
88
118
template <>
89
119
void CosSimBackward<DEVICE_TYPE_CPU>(const CpuMatrix* out_grad,
90
120
const CpuMatrix* out_val,
@@ -146,6 +176,8 @@ void CosSimBackward<DEVICE_TYPE_CPU>(const CpuMatrix* out_grad,
146
176
}
147
177
148
178
/* *
179
+ * Cosine Similarity backward Derivative
180
+ *
149
181
* \param inouts[0] forward input grad 1, size: nSamples * dim.
150
182
* \param inouts[1] forward input grad 2,
151
183
* size: n2 * dim (n2 == 1 or n2 == nSamples).
0 commit comments