This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5994:使用'IN&'或'FLOFF&'值的矩阵乘法

Guru**** 2387830 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1066347/msp430fr5994-matrix-multiplication-using-int-or-float-values

部件号:MSP430FR5994

我正在为神经网络实施多个矩阵乘法和添加步骤。 我尝试查看之前的一些与此相关的问题,但无法找到有关此问题的具体答案。 在我使用的当前实现中,MSP DSP 库正在执行矩阵乘法,但使用了'_Q15'变量-在这里,由于对数字使用了定点表示法,这些值被移动。 我想澄清一下,是否有任何方法可以对简单整数值执行正常矩阵乘法,从而将结果存储为没有任何位移的状态。 我知道,使用定点表示法将导致计算结果根据系统的定义发生变化。 但是,我想避免这种情况,只需保持目前的结果。 我更喜欢使用 LEA,但由于 LEA 通常使用“_Q15”格式,如果唯一可用的方法是不使用 LEA,即使这些方法也是有效的。  

我之所以要进行标准矩阵计算,是因为包含神经网络权重和偏倚的矩阵可以直接使用量化值进行填入,这样所有条目都是整数值。 这将使通过神经网络的多个层或步骤变得相当简单,这与使用定点表示法的情况不同,在此处需要验证每个计算的完整性。 请告诉我是否需要任何类型的示例来理解计算结果,因为我将问题保持在理论上,因为这更像是一个概念难题,而不是我不理解的代码的某些部分。 任何类型的销售线索都值得赞赏,包括一些参考指南或手册,其中可能包含有关此方面的更多信息。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议您在 PC 上安装 C 编译器并运行一些模拟。 如果您不需要小数值,则应该没有问题,但是,您可以非常迅速地超出动态范围。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我检查了 C 编译器上的矩阵计算结果,它们都在研究中。 矩阵结果和尺寸也是正确的。  

    我想做如下计算:

    The input matrices can be considered as follows: A= [[2,3], [4,5]], B= [[4,5], [2,3]] . 
    The result of this calculation would be AB = [[14,19], [26,35]].

    矩阵将包含范围为[-127,127]的值,将执行的任何乘法都将保留在'Int16_t' 类型的整数声明的范围内。  

    这样的计算无法与 LEA 一起复制,因为它需要'_Q15'参数和定点表示- AB 的结果将偏移15位。 但是,如果我想执行上述计算并获得上述描述中提到的结果矩阵 AB,我可以使用 MPY32或甚至 LEA 在 MSP430上执行此操作吗? 如果是,是否有任何参考文章或指南描述 MSP430上的此类矩阵操作? 除了 MSP DSPLibrary,我找不到任何其他方法,这里定义的所有方法都使用定点表示法。  

    请告诉我,如果需要更多详细信息,我会很乐意提供必要的信息。 感谢您的耐心和回应。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果你只是乘以这样的小矩阵,我只会硬编码乘法并完成乘法。 只需担心它是否成为瓶颈。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速响应。 小矩阵是我列举的一个例子,用来解释我要做的事情。 但是,我需要执行的计算更大,最大矩阵尺寸跨越[12*12]。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    首先,只需使用 Basic C。如果速度太慢,则可以考虑使用硬件乘数的乘积能力。 (就像 DSP 库一样。) 或装配体语言。  但请确保您需要速度,否则您只是在浪费时间。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,谢谢。 我将在一天或两天内尝试此方法,然后在我对该方法有一些结果或反馈后,在此处更新问题。 感谢您的回复。