Machine learning 批次上的Keras软余量

Machine learning 批次上的Keras软余量,machine-learning,keras,graph,deep-learning,Machine Learning,Keras,Graph,Deep Learning,我试图用Keras实现TransE模型,但在原始文章的损失函数中提到,它不是硬利润,与SVM一样,它是软利润。正如您在我的代码中所看到的,当我计算两个向量的欧几里得距离并从1中减去它时,它会创建分数输出。但它应该有一个批量的余量,我不能使用铰链损失函数,因为它没有分类 import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from ke

我试图用Keras实现TransE模型,但在原始文章的损失函数中提到,它不是硬利润,与SVM一样,它是软利润。正如您在我的代码中所看到的,当我计算两个向量的欧几里得距离并从1中减去它时,它会创建分数输出。但它应该有一个批量的余量,我不能使用铰链损失函数,因为它没有分类

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from keras import backend as K 
def euc_dist_keras(y_true, y_pred):
    return K.sqrt(K.sum(K.square(y_true - y_pred), axis=-1, keepdims=True))

head = keras.Input(shape=(1,), name="Head") 
rel = keras.Input(shape=(1,), name="Rel")  
tail = keras.Input(shape=(1,), name="Tail")  

embedding = layers.Embedding(entity_count, embedding_dim)
head_features = embedding(head)
tail_features = embedding(tail)
tail_features = tf.keras.layers.Flatten()(tail_features)
rel_features = layers.Embedding(rel_count, embedding_dim)(rel)


head_plus_rel = added = tf.keras.layers.Add()([head_features, rel_features])

head_plus_rel = tf.keras.layers.Flatten()(head_plus_rel)
tail_features = tf.keras.layers.Flatten()(tail_features)
score = 1 - euc_dist_keras(head_plus_rel,tail_features)

model = keras.Model(
    inputs=[head, tail,rel],
    outputs=score,
)