如何用exporter.export_saved_model方法将resnet101的keras模型导出到tensorflow中。

问题描述 投票:1回答:1

我使用Keras和resnet 101进行训练,想用exporter.export_inference_graph这个方法将我的模型导出到TensorFlow中,但它给了我错误。

FailedPreconditionError(见上面的traceback)。试图使用未初始化的值 conv2_block2_1_bnmoving_variancelocal_step_1。

keras tensorflow-serving resnet
1个回答
0
投票

有什么具体的原因让你想用这个方法来保存模型吗?export_saved_model?

如果你的目标是保存预先训练好的模型。resnet 并使用Tensorflow Serving进行推理,你可以使用下面提到的代码来完成。

from tensorflow.keras.applications import ResNet50
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras import Model
my_resnet = ResNet50(weights='imagenet', include_top=False, input_shape=(224,224,3))


# Add Global Average Pooling Layer
x = my_resnet.output
x = GlobalAveragePooling2D()(x)

# Add a Output Layer
my_resnet_output = Dense(5, activation='softmax')(x)

# Combine whole Neural Network
my_resnet_model = Model(inputs=my_resnet.input, outputs=my_resnet_output)

my_resnet_model.save('my_flowers')

最后一行代码将模型保存在以下文件中 .pb format.

现在,我们需要编写客户端文件的代码,可以使用Tensorflow Serving进行推理。

import grpc
import requests
import tensorflow as tf

import cv2
import os
import numpy as np


def main():

  img_array = cv2.imread('daisy.jpg')
  new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
  new_array = new_array / 255

  import json
  data = json.dumps(
    {"signature_name": "serving_default", "instances": new_array.reshape(-1, 224, 224, 3).tolist()})
  print('Data: {} ... {}'.format(data[:50], data[len(data) - 52:]))

  headers = {"content-type": "application/json"}
  json_response = requests.post('http://35.226.32.128/v1/models/test0221/versions/1:predict', data=data, headers=headers)
  predictions = json.loads(json_response.text)['predictions']
  np.argmax(predictions[0])
  dicti
  for flower, label in dicti.items():
    if label == np.argmax(predictions[0]):
      print(flower)


if __name__ == '__main__':
  main()
© www.soinside.com 2019 - 2024. All rights reserved.