Пользовательский слой проекции Keras - PullRequest
2 голосов
/ 15 марта 2020

В настоящее время у меня есть данные, выводимые в R ^ n + m, и я хочу добавить слой, "проецирующий" выходные векторы в R ^ m, ie:

(x_1,...,x_m+n) -> (x_n+1,...,x_m+n).

Как мне написать пользовательский слой с тензорным потоком, который делает это, ничего не обучаемый, учитывая, что я всегда знаю n?

Я предполагаю, что это какой-то тип лямбда-слоя ...

1 Ответ

1 голос
/ 16 марта 2020

Я надеюсь, что это то, что вы спрашиваете, учитывая, что ваш вектор длины 7 = n + m, а ваш m равен 3 (нарезка последних 3 элементов).

Ввод

[[ 0.  1.  2.  3.  4.  5.  6.]
 [ 7.  8.  9. 10. 11. 12. 13.]]

Пример кода

m = 3

test = Lambda(lambda x: x[:, -m:])
in1 = Input(shape=(7,))
out = test(in1)

# test
M = Model(inputs=[in1],outputs=[out])
M.compile(keras.optimizers.Adam(),loss='mse')
print(M.predict(np.arange(14,dtype=np.float32).reshape(2,7)))

Выход

[[ 4.  5.  6.]
 [11. 12. 13.]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...