Этот вопрос относится к этому вопросу , но немного проще.
Я хочу, чтобы Керас мог взять массив чисел и суммировать их.Массив должен иметь произвольную длину, определяемую размерностью пакета.
Следующий простой пример не работает:
from keras.models import Model
from keras.layers import Input, Lambda
from keras import backend as K
inp = Input(shape = (1,))
out = Lambda(lambda x: K.sum(x))(inp)
m = Model(inp, out)
m.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_7 (InputLayer) (None, 1) 0
_________________________________________________________________
lambda_2 (Lambda) () 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________
Выходная форма должна быть скалярной: (1)
.Нет размерности партии.m
, как определено выше, не компилируется.
Желаемый результат будет m.predict(np.array([1,2,3]))
с результатом 6
.Или, может быть, массив или тензор, содержащий 6
.
Может ли эта основная задача - применение в качестве функции к измерению пакета и возврат скаляра - быть выполнена в Keras?Если нет, то можно ли это сделать в чистом тензорном потоке?
РЕДАКТИРОВАТЬ: я только что узнал, что вы можете предсказать из этой модели, не компилируя:
m.predict(np.array([1,2]))
дает
array([3., 3.], dtype=float32)
Полагаю, теперь у меня вопрос, как я могу сжать это в скаляр и заставить его скомпилировать.