lua里面实现点乘# Programming - 葵花宝典
b*i
1 楼
看了torch有感,lua可以通过运算符重载实现矩阵的运算。于是我按照例子做了加法,
这个需要判断a+b是两个矩阵相加,还是其中有一个非矩阵的数,后面这个似乎数学里
面是不支持的,但是matlab支持。而且很方便,比如我生成一个向量 x=-pi:0.1:pi,然
后y=sin(x)+10,就是把向量的结果都平移10.否则我还需要自己写一个全都是常数10的
向量。
而做乘法的时候发现,在lua里面我也可以实现一维矩阵和常数的乘法,然后通过运算
符重载重用*这个符号,比如c=a*5,里面a和c都是矩阵(向量)。做矩阵和矩阵乘法的
时候,有两种,一种是数学的乘法,一种是Matlab里面的点乘 .*就是两个矩阵每个元
素相乘。
那么,现在我没有实现两个矩阵的乘法。我先在lua里面要实现点乘,很简单。在犹豫
要不要把点乘重载到*那里去。缺点是,这个不是通用的矩阵乘法,而是点乘。我如果
把点乘重载到*那里,那么以后如果增加了矩阵乘法(模仿torch),还得改掉。
而点乘在lua里面原本不存在。难道我需要改lua的编译器来增加点乘,点除,点乘方等
几个运算符?怎样做最好?
这个需要判断a+b是两个矩阵相加,还是其中有一个非矩阵的数,后面这个似乎数学里
面是不支持的,但是matlab支持。而且很方便,比如我生成一个向量 x=-pi:0.1:pi,然
后y=sin(x)+10,就是把向量的结果都平移10.否则我还需要自己写一个全都是常数10的
向量。
而做乘法的时候发现,在lua里面我也可以实现一维矩阵和常数的乘法,然后通过运算
符重载重用*这个符号,比如c=a*5,里面a和c都是矩阵(向量)。做矩阵和矩阵乘法的
时候,有两种,一种是数学的乘法,一种是Matlab里面的点乘 .*就是两个矩阵每个元
素相乘。
那么,现在我没有实现两个矩阵的乘法。我先在lua里面要实现点乘,很简单。在犹豫
要不要把点乘重载到*那里去。缺点是,这个不是通用的矩阵乘法,而是点乘。我如果
把点乘重载到*那里,那么以后如果增加了矩阵乘法(模仿torch),还得改掉。
而点乘在lua里面原本不存在。难道我需要改lua的编译器来增加点乘,点除,点乘方等
几个运算符?怎样做最好?