1

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

4

2 回答 2

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

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 )
于 2013-08-28T08:23:03.950 回答
1

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

于 2014-01-18T19:02:32.773 回答