Я пытаюсь преобразовать свою модель трансформатора в формат .tflite, но продолжаю видеть ошибки в форме ввода независимо от значений, которые я ввел. Я попытался ввести размеры партии и размеры модели без разницы. Я получаю в основном ошибку ValueError: None is only supported in the 1st dimension.
Код конвертера:
import tensorflow as tf
model = tf.saved_model.load("saved_model\d_1024\\b_128\E_440")
concrete_func = model.signatures[
tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
concrete_func.inputs[0].set_shape([the part i need help with])
converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
и код сохранения:
from model import transformer
from dataset import get_dataset, preprocess_sentence
from Main import evaluate
parser = argparse.ArgumentParser()
parser.add_argument(
'--max_samples',
default=25000,
type=int,
help='maximum number of conversation pairs to use')
parser.add_argument(
'--max_length', default=40, type=int, help='maximum sentence length')
parser.add_argument('--batch_size', default=64, type=int)
parser.add_argument('--num_layers', default=2, type=int)
parser.add_argument('--num_units', default=512, type=int)
parser.add_argument('--d_model', default=1024, type=int)
parser.add_argument('--num_heads', default=8, type=int)
parser.add_argument('--dropout', default=0.1, type=float)
parser.add_argument('--activation', default='relu', type=str)
parser.add_argument('--epochs', default=20, type=int)
hparams = parser.parse_args()
dataset, tokenizer = get_dataset(hparams)
model = transformer(hparams)
model.load_weights('Weights_only/d_1024/b_128/e_200/cp.ckpt')
model.save("saved_model\d_1024\\b_128\E_440")
и краткое описание модели:
Model: "transformer"
_______________________
Layer (type) Output Shape Param #
=================================================================
inputs (InputLayer) [(None, None)] 0
_______________________
dec_inputs (InputLayer) [(None, None)] 0
_______________________
enc_padding_mask (Lambda) multiple 0
_______________________
encoder (Model) multiple 18848768
_______________________
look_ahead_mask (Lambda) multiple 0
_______________________
dec_padding_mask (Lambda) multiple 0
_______________________
decoder (Model) multiple 27249664
_______________________
outputs (Dense) multiple 8351700
=================================================================
Total params: 54,450,132
Trainable params: 54,450,132
Non-trainable params: 0
_______________________
модель относится к https://github.com/bryanlimy/tf2-transformer-chatbot, но я добавил
checkpoint_path = "Weights_only/d_1024/b_128/e_200/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
# Create a callback that saves the model's weights
cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
save_weights_only=True,
verbose=1)
model.fit(dataset, epochs=hparams.epochs, callbacks=[cp_callback])
, чтобы сохранить веса для модели