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