我使用Keras和resnet 101进行训练,想用exporter.export_inference_graph这个方法将我的模型导出到TensorFlow中,但它给了我错误。
FailedPreconditionError(见上面的traceback)。试图使用未初始化的值 conv2_block2_1_bnmoving_variancelocal_step_1。
有什么具体的原因让你想用这个方法来保存模型吗?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()