Мобильная сеть Tensorflow использует модели в автономном режиме

Я использую мобильную сеть из tensorflow и пытаюсь загрузить модели в автономном режиме.

Здесь загружается модель:

tf.loadModel(this.path)]

Мой первый подход заключался в том, чтобы просто загрузить model.json и указать этот файл вместо полного URL-адреса в моем коде следующим образом:

   // this.path = 'https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/model.json';
   this.path = "./model.json";

Но затем я получаю следующую ошибку:  введите описание изображения здесь

GET https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group37-shard1of1 net::ERR_INTERNET_DISCONNECTED
weights_loader.js:47 

Как мне загрузить и правильно указать веса для использования в автономном режиме?


ОБНОВЛЕНИЕ. Теперь я просто загрузил каждый сегмент вручную, используя ссылку в сообщении об ошибке.

https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group1-shard1of1 https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group1-shard1of1 https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group1-shard1of1 и так далее до https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group55-shard1of1

Теперь группы загружаются правильно:  введите описание изображения здесь

но я получаю новое сообщение об ошибке:

Ошибка: на основе предоставленной формы [1,1,1024,1000] и dtype float32 тензор должен иметь 1024000 значений, но имеет 410072


person acroscene    schedule 03.09.2020    source источник


Ответы (1)


Если у вас установлен tenorflow, доступны модели MobileNet и MobileNet версии 2, как показано ниже. Документация находится [здесь.] [1]. Для исходной версии вы можете получить веса для модели, обученной на наборе данных imagenet для размера изображения 224 X 224, с помощью приведенного ниже кода. Доступно четыре набора предварительно обученных весов для изображений размером 224, 192, 160, 128, поэтому выберите тот, который вам нужен. Ниже я выбрал веса для размера изображения 224 X 224. Переменные веса будут содержать предварительно обученные веса.

image_size=224
mobile = tf.keras.applications.mobilenet.MobileNet( include_top=True,
                                                           input_shape=(image_size,image_size,3), weights='imagenet',alpha=1, depth_multiplier=1, dropout=.1)
model = Model(inputs=mobile.input, outputs=mobile.output)  
model.compile(Adamax(lr=.001), loss='categorical_crossentropy', metrics=['accuracy'])
weights=model.get_weights()


  [1]: https://keras.io/api/applications/mobilenet/
person Gerry P    schedule 04.09.2020
comment
извините, я действительно не понимаю, как это помогает мне запускать модели tensorflows.js в автономном режиме? - person acroscene; 04.09.2020
comment
Думаю, я не понимаю, в чем проблема. Что вы имеете в виду под офлайн - person Gerry P; 04.09.2020
comment
Ну, просто без подключения к Интернету :) Как вы можете видеть, теперь он пытается получить веса из googleapis. Я хочу сохранить их и вытащить локально, чтобы я мог использовать их также, когда у меня нет подключения к Интернету. - person acroscene; 04.09.2020
comment
см. измененный ответ. Есть четыре возможных набора веса. - person Gerry P; 04.09.2020
comment
Спасибо за это! На самом деле теперь я просто загрузил каждый шард вручную, используя ссылку в сообщении об ошибке. См. Обновление выше - person acroscene; 04.09.2020