在J中创建y形随机浮动数组

问题描述 投票:1回答:1

我正在尝试创建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

看起来这段代码返回的是我想要的东西 所以我试着做了一个像下面这样的函数。

rand =: 0 ?@$ ~

但是 rand (input_dim, hidden_dim) 给我一个语法错误...

我想我缺少了一个非常重要的部分,但我不确定那是什么。

如果有任何建议,我将感激不尽

j
1个回答
3
投票

你的动词中唯一缺少的是 ].那就是。

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

你的困惑可能是由于你想创造一个... ... 叉子 属于 (noun verb verb)不过 ~ 是一个副词,所以与它左边的动词结合起来,创造一个新的动词(在你的例子中是 ?@$~)所以你的 rand 有形 (0 ?@$~)(noun verb) J无法识别,因此出现了语法错误。

因此,使用以下组合是合理的 ?@$ 如果可能的话,因为它得到了 特别代码 而不产生 x $ y.


3
投票

如果没有这个参数,语法为 0 ?@$ ~ 是模棱两可的,而且解释者会误判小括号(或者更准确地说,正确的小括号不是您认为的那个)。最简单的方法是定义 rand 作为。

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

当然,任何其他消除句法歧义的方法也可以。

rand =: [: ? 0 $~ ]
rand =: ?@(0$~])
rand =: ?@(0&($~))
...
© www.soinside.com 2019 - 2024. All rights reserved.