У меня есть вопрос по оси = 0 для numpy и Keras
Во-первых, когда я запускаю следующий код для преобразования массива (2,3,4) в массив (3,4) с помощью суммыс осью = 0 он работает.
v = np.arange(24).reshape(2,3,4)
print("v.shape: ", v.shape,"\n","v:\n", v)
s0 = v.sum(axis=0)
print("s0.shape :", s0.shape,"\n", "s0\n",s0)
v.shape: (2, 3, 4)
v:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
s0.shape : (3, 4)
s0
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]
Но, когда я запускаю его с помощью Keras, он жалуется следующим образом:
input = Input((3,4,))
sum0 = Lambda(lambda x : K.sum(x, axis=0)) (input)
model0 = Model(input, sum0)
v = np.reshape(np.arange(24), (2,3,4))
print("v.shape :", v.shape, "\n","v:\n", v)
s0 = model0.predict(v)
print("s0.shape :", s0.shape,"\n","s0:\n", s0)
v.shape : (2, 3, 4)
v:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-113-9272b6099fc4> in <module>()
6 v = np.reshape(np.arange(24), (2,3,4))
7 print("v.shape :", v.shape, "\n","v:\n", v)
----> 8 s0 = model0.predict(v)
9 print("s0.shape :", s0.shape,"\n","s0:\n", s0)
...
ValueError: could not broadcast input array from shape (3,4) into shape (2,4)
Мне интересно, почему K.sum (X,ось = 0) жалуется.Это работает, когда K.sum (x, axis = 1) и K.sum (x, axis = 2), например, numpy sum.