我正在尝试微调Universal Sentence Encoder,并将新的编码器层用于其他用途
import tensorflow as tf
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.layers import Dense, Dropout
import tensorflow_hub as hub
module_url = "universal-sentence-encoder"
model = Sequential([
hub.KerasLayer(module_url, input_shape=[], dtype=tf.string, trainable=True, name="use"),
Dropout(0.5, name="dropout"),
Dense(256, activation="relu", name="dense"),
Dense(len(y), activation="sigmoid", name="activation")
])
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(X, y, batch_size=256, epochs=30, validation_split=0.25)
这起作用了。损失减少了,准确度也不错。现在我只想提取Universal Sentence Encoder
层。然而,这是我得到的。
tuned_use
层保存为模型?理想情况下,我希望像Universal Sentence Encoder
一样保存tuned_use
层,这样我就可以像hub.KerasLayer(tuned_use_location, input_shape=[], dtype=tf.string)
一样打开并使用它李>
我希望这能帮助一些人,最后用universal-sentence-encoder-4而不是universal-sentence-encoder-large-5解决了这个问题。我花了相当多的时间进行故障排除,但这很困难,因为输入数据没有问题,并且模型训练成功。这可能是由于梯度爆炸问题,但无法将
gradient clipping
或Leaky ReLU
添加到原始体系结构中相关问题 更多 >
编程相关推荐