【问题标题】:Need help translating python code (with Numpy) to Matlab equivalent需要帮助将 python 代码(使用 Numpy)翻译成 Matlab 等效代码
【发布时间】:2018-05-13 23:40:38
【问题描述】:

我正在研究一个使用 Sigmoid 激活函数的 XOR 神经网络。 我有一个可用的 python 代码,但我需要将其中一行转换为 MATLAB 可以理解的代码。我查看了有关 NumPy 的文档,我知道它有自己的数组运算符。我只是无法为dH 组合一个等效的 MATLAB。这部分在一个显式的 for 循环中。 dZ = E * sigmoid_(Z) # delta Z dH = dZ.dot(Wz.T) * sigmoid_(H) # delta H

解释也有助于我进一步理解。如果需要我的完整代码,请不要犹豫,但我知道不需要。

【问题讨论】:

  • dZ 是正常乘积,dZ.dot(Wz.T) 是矩阵乘积乘以向量。
  • mathesaurus.sourceforge.net/matlab-python-xref.pdf 在这里您可以找到 numpy 命令和翻译后的 matlab 命令
  • 如果您为所有输入变量提供形状(例如E.shapeWz.shape),将会有所帮助。我假设它们都是 numpy 数组。
  • @MaxKrappmann 谢谢。我已经浏览了 mathesaurus 资源和其他几个资源。当涉及到dot() 时,它们的等价性是相同的,但它没有解释它前面的变量如何将其从数组点积更改为矩阵乘以数组。我感谢你提供的信息。它们的大小不同。
  • E = (4 1) dH = (4 3)

标签: python matlab numpy neural-network xor


【解决方案1】:

通常您创建一个从 Z 和 H 计算 (dZ, dH) 的函数。其中 y = (Z, H):

function dy = myODE(t,y)
  dy(1) = E * sigmf_(y(1), [a b])
  dy(2) = dy(1).dot(W*y(1).T) * sigmf_(y(2), [a b])

来源:https://de.mathworks.com/help/matlab/math/choose-an-ode-solver.html?requestedDomain=www.mathworks.com

【讨论】:

    【解决方案2】:

    在 Matlab 中

        dZ = E * sigmoid_(Z)                        # delta Z
        dH = dZ.dot(Wz.T) * sigmoid_(H)             # delta H
    

    dZ 使用矩阵积(点积)

    Matlab: a * b 矩阵乘法(a,b)

    可以使用 np.dot 复制 dH 术语 但有时 Matlab 点积:

    Vector dot product, u · v dot(u,v) dot(u,v)
    

    vs 你的:

    dZ.dot(Wz.T)
    

    这很可能在python中等于

    dot(W.T,dZ)
    

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      相关资源
      最近更新 更多