簡體   English   中英

微風中的證據參數問題

[英]Problem with evidence parameters in breeze

我正在嘗試在微風中構建向量的密集矩陣。 但是我不斷收到錯誤消息:

could not find implicit value for evidence parameter of type breeze.storage.Zero[breeze.linalg.DenseVector[Double]]

對於該行:

  val som: DenseMatrix[DenseVector[Double]] = DenseMatrix.tabulate(5, 5){ (i, j) => DenseVector.rand(20)}

即使使用 Scala 陣列做類似的事情也可以正常工作:

val som = Array.tabulate(5, 5)((i, j) => DenseVector.rand(20))

我不確定我做錯了什么或我錯過了什么? 老實說,我不明白錯誤消息告訴我什么......我沒有做足夠的 Scala 編程來理解這一點? 什么是證據參數,我可以顯式指定它還是需要一個隱式參數?

這是因為DenseMatrix.tabulate[V]首先用零填充矩陣。 所以應該有一個類型為 class Zero的實例V ,即在我們的例子中DenseVector[Double] 您可以自己定義它,例如

implicit def denseVectorZero[V: Zero : ClassTag]: Zero[DenseVector[V]] =
  new Zero(DenseVector.zeros(0))

即,如果我們知道VZero ,那么我們知道DenseVector[V]Zero

甚至更容易

implicit def ev[V: ClassTag]: Zero[DenseVector[V]] = new Zero(DenseVector(Array.empty))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM