如何在C#中实现MATLAB'tansig'双曲正切sigmoid传递函数

时间:2013-08-28 06:10:32

标签: c# matlab neural-network

我正在尝试复制MATLAB'sim'函数,如本文所述:Export a neural network trained with MATLAB in other programming languages但是我正在努力找到一种在C#中实现MATLAB tansig函数的方法。它定义为:a =(2 ./(1 + exp(-2 * n)) - 1)我读它的方式是我需要在矩阵上执行指数。对网络的研究表明这是一个重要的数学问题,特别是当矩阵不对称时。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

虽然有点不清楚,但我猜你正在提到将挤压功能应用于神经元的输出信号。

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

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

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 )

答案 1 :(得分:1)

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