Керас L2 нормализация каскадных векторов - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь построить сеть в Керасе, которая должна вывести два вектора длины блока измерений 3 и 4 соответственно, и в настоящее время использую последний плотный слой измерения 7 для достижения этой цели. Теперь моя проблема в том, что у меня есть идея, как добавить слой, который нормализует длины двух векторов по отдельности. Из того, что я понимаю, обычно можно нормализовать векторный вывод с помощью чего-то вроде

l2_norm = Lambda(lambda  x: K.l2_normalize(x,axis=1))(prevDense)

, но не ясно, как изменить эти два, обрабатывать две "половины" по отдельности. Есть идеи?

1 Ответ

0 голосов
/ 08 апреля 2020

Кажется, что вы хотите использовать слой Lambda , чтобы сначала разрезать тензоры, а затем выполнить нормализацию. В этом случае вы можете сделать следующее:

# slicing the tensors
slice1 = Lambda(lambda x: x[:,:4])(prevDense)
slice2 = Lambda(lambda x: x[:,:3])(prevDense)

l2_norm_slice1 = Lambda(lambda  x: K.l2_normalize(slice1,axis=1))(slice1)
l2_norm_slice2 = Lambda(lambda  x: K.l2_normalize(slice2,axis=1))(slice2)

Надеюсь, это поможет!

...