В Keras, как использовать dot () для вычисления косинус-близости между тензором и каждой строкой постоянной матрицы?

Отказ от ответственности: принятый ответ дает идею решения, но я нахожу его немного раздутым с ненужными правилами оболочки и CSS. Ниже представлено решение с очень небольшим количеством правил CSS.

HTML 5


    
Header with an arbitrary height
This container will grow so as to take the remaining height

CSS

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;       /* body takes whole viewport's height */
}

main {
  flex: 1;                 /* this will make the container take the free space */
}

Решение выше использует единицы просмотра и flexbox , и поэтому IE10 +, используя старый синтаксис для IE10.

Codepen для воспроизведения с: ссылкой to codepen

Или этот, для тех, кому нужен прокручиваемый основной контейнер в случае переполнения содержимого: ссылка на codepen

0
задан Milo Lu 16 January 2019 в 05:14
поделиться

1 ответ

Вы можете использовать K.dot() напрямую. Поскольку вы уже используете K.l2_normalize, результатом умножения матриц является близость косинуса.

from keras.models import Model
import keras.backend as K
from keras.layers import Lambda,Input
import numpy as np

N = 100
def dot_similarity(jdes):
    jdes = K.l2_normalize(jdes, axis=-1) # (?, 100)
    # define it myself
    jt_six = K.constant(np.random.uniform(0, 1, size=(6, N)))
    jt_six = K.l2_normalize(K.variable(jt_six), axis=-1) # (6, 100)
    return K.dot(jdes,K.transpose(jt_six))

jdes = Input(shape=(N,))
result = Lambda(dot_similarity)(jdes)
model = Model(jdes,result)
print(model.summary())

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 100)               0         
_________________________________________________________________
lambda_1 (Lambda)            (None, 6)                 0         
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________
0
ответ дан giser_yugang 16 January 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: