【问题标题】:How to implement MATLAB 'tansig' Hyperbolic tangent sigmoid transfer function in C#如何在 C# 中实现 MATLAB 'tansig' 双曲正切 sigmoid 传递函数
【发布时间】:2013-08-31 02:13:18
【问题描述】:

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

【问题讨论】:

  • @jorgenkg 你是对的 - 当我将激活函数单独应用于输出向量中的每个值时,我能够计算出与 MATLAB 使用其“sim”函数(它使用“ tansig”函数)。

标签: c# matlab neural-network


【解决方案1】:

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

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

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

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 )

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 2013-03-10
      • 2018-10-20
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多