簡體   English   中英

在 J 中創建 y 形狀隨機浮點數組

[英]Creating y shape random float array in J

我正在嘗試創建 y 形隨機浮點數組,這是我現在的當前:

input_dim =: 2
hidden_dim =: 16

0 ?@$ ~ (input_dim, hidden_dim) 

0.838135  0.96131 0.766721 0.420625 0.640265 0.683779 0.683311 0.427981 0.281479 0.305607 0.385446 0.898389  0.24596 0.452391 0.739534 0.973384
0.914155 0.172582 0.146184 0.624908 0.333564 0.132774 0.475515 0.802788 0.277571 0.146896  0.40596 0.735201 0.943969 0.259493 0.442858 0.374871

似乎這段代碼返回了我真正想要的,所以我嘗試制作一個 function,如下所示:

rand =: 0 ?@$ ~

但是rand (input_dim, hidden_dim)給了我一個語法錯誤......

我想我錯過了一個非常重要的部分,但我不確定那是什么。

任何建議將不勝感激!

沒有參數, 0?@$ ~的語法是模棱兩可的,解釋器錯誤分類括號(或者,更准確地說,正確的括號不是你認為的那個)。 解決這個問題的最簡單方法是將rand定義為:

rand =: 3 :'0 ?@$ ~ y'

當然,任何其他消除句法歧義的方法也可以:

rand =: [: ? 0 $~ ]
rand =: ?@(0$~])
rand =: ?@(0&($~))
...

您的動詞中唯一缺少的是] 那是:

   rand =: 0 ?@$~ ]
   rand 2 3
0.891663 0.888594 0.716629
  0.9962 0.477721 0.946355

可能你的困惑是因為你想創建一個形式的分支(noun verb verb) ,但是~是一個副詞,因此與它左邊的動詞結合起來創建一個新動詞 (在你的情況下?@$~ ) 所以您的rand具有 J 無法識別的(0?@$~)(noun verb)形式 - 因此出現語法錯誤。

如果可能,使用組合?@$是有意義的,因為它由 特殊代碼支持並且不會創建x $ y

暫無
暫無

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

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