arrayfire-python中的行/列方式外部产品

时间:2017-08-11 12:23:24

标签: python numpy arrayfire

如何在arrayfire-python中实现行/列外部产品?

这是numpy中的类比实现。

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `naam` varchar(50) NOT NULL,
  `leeftijd` varchar(50) NOT NULL,
  `occupatie` varchar(100) NOT NULL,
  `username` varchar(50) NOT NULL,
  `password` varchar(100) NOT NULL,
  `level` int(2) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

--
-- Gegevens worden geëxporteerd voor tabel `users`
--

INSERT INTO `users` (`id`, `naam`, `leeftijd`, `occupatie`, `username`, `password`, `level`) VALUES
(1, `Pieter-Bracke`, `28`, 'Freelance webdeveloper', `Pieter`, `Pieter`, 0);

P.S。我正在寻找实现Mini-batch Gradient Descent的小幅加速,我找到了这个库。

1 个答案:

答案 0 :(得分:1)

这在arrayfire中不可用作本机函数。但是,你可以使用广播和moddims实现这样的东西:

>>> @af.broadcast
... def outer(a, b):
...     am = af.moddims(a, a.shape[0], 1, a.shape[1])
...     bm = af.moddims(b.T, 1, b.shape[1], b.shape[0])
...     cm = am * bm
...     return cm
... 
>>> a
arrayfire.Array()
Type: float
[3 2 1 1]
    0.6874     0.3552 
    0.9058     0.1589 
    0.5023     0.8857 


>>> b
arrayfire.Array()
Type: float
[2 3 1 1]
    0.2060     0.9028     0.7167 
    0.4522     0.0121     0.2723 


>>> print(outer(a, b))
arrayfire.Array()
Type: float
[3 3 2 1]
    0.1416     0.6206     0.4927 
    0.1866     0.8178     0.6492 
    0.1035     0.4535     0.3600 

    0.1606     0.0043     0.0967 
    0.0719     0.0019     0.0433 
    0.4006     0.0107     0.2412 

如果您有任何特定功能请求,请跟进github:https://github.com/arrayfire/arrayfire-python/issues