我在尝试将图像输入到这个模型时遇到了问题。
以下是get_input_details的输出
[{'name': 'module/hub_input/images_uint8', 'index': 170, 'shape': array([ 1, 224, 224, 3], dtype=int32), 'shape_signature': array([ 1, 224, 224, 3], dtype=int32), 'dtype': <class 'numpy.uint8'>, 'quantization': (0.0078125, 128), 'quantization_parameters': {'scales': array([0.0078125], dtype=float32), 'zero_points': array([128], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
根据Tensorflow Hub上的描述,应该是
大小为224 x 224的3通道RGB彩色图像,缩放到[0, 1]范围内。
我有以下脚本来实现这个功能
def process_image(image_path): image = Image.open(image_path) new_image = image.resize((224,224)) np_image = asarray(new_image) min = np_image.min() max = np_image.max() # 归一化到0-1范围 np_image = np_image.astype('float32') np_image -= min np_image /= (max - min) return [np_image]
之后,我输入图像并得到了以下错误
ValueError: 无法设置张量:得到的类型为FLOAT32,但输入170期望的类型为UINT8,名称:module/hub_input/images_uint8
有什么想法知道我哪里做错了?
回答:
这个错误与您的输入图像大小无关,我认为这是由于图像类型引起的。您确定需要将图像归一化到0和1之间吗?错误似乎表明输入应该是uint8类型。如果是这样,以下代码应该可以工作。
def process_image(image_path): image = Image.open(image_path) new_image = image.resize((224,224)) np_image = asarray(new_image) np_image = np_image.astype('uint8') return [np_image]