4

関数上でhlintを実行すると、weightDeltaEtaが減少することが示唆され続けます。別の関連するイータ削減の質問を読みましたが、この場合に理解を移すことができないようです。

module StackQuestion where

import qualified Data.Vector as V

type Weights = V.Vector Double
type LearningRate = Double

weightDelta :: LearningRate -> Double -> Double -> Weights -> Weights
weightDelta n r y ws = V.map update  ws
        where update w = diff * n * w
              diff = r - y

自由な構文を指すように「減らす」ために私が行おうとするすべての変更は、それを壊してしまいます。変更はどこで行われるのでしょうか。また、将来的にeta reduceの提案を回避するための直感やトリックはありますか?

4

1 に答える 1

8

ポイントフリーの構文を簡単に理解することはできませんが、すぐにできることは、単にηを減らすことwsです。

weightDelta :: LearningRate -> Double -> Double -> Weights -> Weights
weightDelta n r y = V.map update
        where update w = diff * n * w
              diff = r - y

次のようなこともできます

        where update = (δ *)
              δ = n * (r - y)

しかし、それはかなり議論の余地があります。

于 2012-07-08T08:56:00.863 に答える