以下のような行列Xと行列Yが与えられた時、
各々の行ベクトルの内積をまとめて計算したいです。
つまり、バッチデータに対する、単純な内積計算です。

ChainerのFunctionを使って、
以下のようなことはどのように実現できるでしょうか?

import numpy as np

import chainer.functions as F


X = np.array([[1, 2, 3],
              [4, 5, 6]],
              dtype=np.float32)


Y = np.array([[7, 8, 9],
              [1, 2, 3]],
              dtype=np.float32)

dot_XY = [[np.dot(X[0], Y[0])],
          [np.dot(X[1], Y[1])]]

print dot_XY

>> [[50.0], [32.0]]


dot_XY = F.matmul(X, Y, transb=True)
print dot_XY.data

>> [[  50.   14.]
    [ 122.   32.]]


dot_XY = F.Linear(X, Y)
print dot_XY.data

>> TypeError: only length-1 arrays can be converted to Python scalars

私が初歩的な勘違いをしているだけかもしれないのですが、
FunctionのLinearやmatmulを使っても、
バッチ単位での単純な内積計算はできませんでした。

ひとまず、以下のようにして実現はできたのですが、
もっと普通に書けるかと思います。

dot_XY = F.expand_dims(F.sum(F.scale(X, Y, 0), 1), 1)
print dot_XY
>> [[ 50.] [ 32.]]

よろしくお願いします。