如何实现MATLAB';tansig';C#中的双曲正切S形传递函数

本文关键字:传递函数 tansig 何实现 实现 MATLAB | 更新日期: 2023-09-27 18:29:28

我正在尝试复制本文中描述的MATLAB"sim"函数:将用MATLAB训练的神经网络导出到其他编程语言中,但我正在努力找出在C#中实现MATLAB tansig函数的方法。它被定义为:a=(2./(1+exp(-2*n))-1),我读取它的方式是,我需要对矩阵执行指数运算。对网络的研究表明,这是一个重要的数学问题,尤其是当矩阵不对称时。感谢任何协助。

如何实现MATLAB';tansig';C#中的双曲正切S形传递函数

虽然有些不清楚,但我猜你指的是将挤压函数应用于神经元的输出信号

你必须将函数应用于神经元输出向量中的每个元素

因此,您可以有效地将函数应用于浮点,而不是矩阵本身。

output = [ 1, 0, 1, 0, 1 ] # output vector from a neuron
def sqash( n ):
   return (2 ./ (1 + exp(-2*n)) - 1)
squashed_output = [ sqash(1), sqash(0), sqash(1), sqash(0), sqash(1) ]

Matlab可能支持与Python中NumPy相同的语法sqash( output )。因此,当使用向量参数调用函数时,将函数单独应用于每个元素。

output = [ 1, 0, 1, 0, 1 ] # output vector from a neuron
def sqash( vector ):
   return (2 ./ (1 + exp(-2 * vector)) - 1)
squashed_output = sqash( output )
MATLAB中的

tansig只是tanh()函数的近似值,因此在MATLAB或任何其他编程语言中工作时,您可以在每个元素上使用标准的tanh(()函数。