我正在自学如何编写高效、优化的深度学习代码;但我在这方面还是个新手。
例如:我正在读
numpy
使用
vectorization
避免
python loops
.
他们也创造了这个词
broadcasting
根据TensorFlow、PyTorch和其他公司使用的链接。
我做了一些挖掘,发现
ldd
在我的Debian框上显示
multiarray.so
链接
libopenblasp-r0-39a31c03.2.18.so
.
让我们来看一个矩阵减法的用例。我想了解如何使用openBLAS来改进这个非常幼稚的实现:
void matrix_sub(Matrix *a, Matrix *b, Matrix *res)
{
assert(a->cols == b->cols);
assert(a->rows == b->rows);
zero_out_data(res, a->rows, a->cols);
for (int i = 0; i < (a->rows*a->cols); i++)
{
res->data[i] = a->data[i] - b->data[i];
}
}
就像一个内积,还是一个加法?