Отказ от ответственности: принятый ответ дает идею решения, но я нахожу его немного раздутым с ненужными правилами оболочки и 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
Вы можете использовать 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
_________________________________________________________________