Загрузить сохраненную модель в отдельный файл Tensorflow-Keras M1 Mac

Я следую руководству от Sentdex, однако я попытался загрузить сохраненную модель из нового файла (run_test.py) и столкнулся со следующей ошибкой.

ValueError: Could not find matching function to call loaded from the SavedModel. 
Got:
 Positional arguments (1 total):
  * Tensor("inputs:0", shape=(None, 28, 28), dtype=uint8)
 Keyword arguments: {}

Expected these arguments to match one of the following 1 option(s):

Option 1:
 Positional arguments (1 total):
  * TensorSpec(shape=(None, 28, 28), dtype=tf.float32, name='inputs')
 Keyword arguments: {}

main.py

import tensorflow as tf
import numpy as np

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())  
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) 
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) 
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'] ) 
model.fit(x_train, y_train, epochs=1) # run the training process 3 times

val_loss, val_acc = model.evaluate(x_test, y_test)

model.save('num_reader_basic.model')

run_test.py

import tensorflow as tf
import numpy as np

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

new_model = tf.keras.models.load_model('num_reader_basic.model')
predictions = new_model.predict(x_test)
print(np.argmax(predictions[0]))

При запуске команды загрузки в том же файле, что и обучающий файл модели (main.py), она не вызывает никаких ошибок, а вызывает ошибку только при запуске из отдельного файла. Есть ли ошибки во втором файле (run_test.py) или есть какие-то другие методы загрузки сохраненной модели из нового файла?


person Ungku Amer    schedule 08.07.2021    source источник
comment
Мне не удалось воспроизвести ошибку при запуске ваших примеров кода. Какие версии TensorFlow вы используете? Я обнаружил похожие проблемы: stackoverflow.com/questions/58575586/ github.com/tensorflow/tensorflow/issues/37339 Это могло иметь какое-то отношение к версии TF.   -  person sakumoil    schedule 08.07.2021
comment
Да, я думаю, это как-то связано с моим тензорным потоком, поскольку я работаю на чипе M1. Архитектура вызывает проблемы, поскольку Python для M1 поставляется с архитектурой 2. Спасибо за ваше предложение, я могу не заглядывать в свою версию программы, если вы не укажете на нее.   -  person Ungku Amer    schedule 08.07.2021


Ответы (1)


Проблема не в самом коде, а в архитектуре M1 и установке TensorFlow. Обратите внимание, что исходный TensorFlow не работает с новым чипом, поэтому требуется установка отдельной версии.

Есть много способов установить версию TensorFlow для arm64, но этот one работает у меня.

person Ungku Amer    schedule 09.07.2021