问题描述
我正在尝试构建一个接收两个输入字符串的 siamese 网络。我使用字符串类型是因为我加载了一个我想训练的 USE 层。
def siamese_model():
left = Input(shape=(1,),dtype=tf.string)
right = Input(shape=(1,dtype=tf.string)
module_url = "https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/3"
embedding_layer = hub.KerasLayer(module_url,trainable=True)
left_encoded = embedding_layer(tf.squeeze(tf.cast(left,tf.string)))
right_encoded = embedding_layer(tf.squeeze(tf.cast(right,tf.string)))
cosine_sim = Dot(axes=1,normalize=True)([left_encoded,right_encoded])
siamese_net = Model(inputs=[left,right],outputs=cosine_sim)
return siamese_net
model = siamese_model()
model.compile(loss="mse",optimizer="adam",metrics=[pearson])
当我尝试
model.predict(x=[[["test"]],[["test"]]])
ValueError: Layer model_1 expects 2 input(s),but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None,1,None) dtype=string>]
如果我尝试使用浮点数,模型可以正确地看到两个输入。
import numpy as np
x1 = np.zeros((1,2))
model.predict(x=[x1,x1])
知道发生了什么吗?我确定这与输入的形状有关
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)