当前位置: 首页 > 知识库问答 >
问题:

二元分类中的张量流精简负面预测

都超英
2023-03-14

我基本上是希望通过pyinstaller来准备我的模型。并且由于打包tensorflow导致最终的可执行文件大小约为500mbs。我求助于使用tensorflow lite。

现在的问题是,当我将模型转换为tflite(量化或非量化)时,它会为我输入的任何图像提供以下输出。

array([[-1.3749948e+23]], dtype=float32)

以下是我的模型转换代码

import tensorflow as tf

m = load_model("weights.best.hdf5")
converter = tf.lite.TFLiteConverter.from_keras_model(m)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()

下面是测试tflite模型的代码。

import tflite_runtime.interpreter as tflite
interpreter = tf.lite.Interpreter(model_content=tflite_quant_model)
interpreter.allocate_tensors()
inputdets = interpreter.get_input_details()
outputdets = interpreter.get_output_details()

import imageio
import cv2
import numpy as np
img = imageio.imread("1 (162).jpg")/256.0

final = cv2.resize(img,(150,150))
input_data = np.array([final],dtype=np.float32)
interpreter.set_tensor(inputdets[0]['index'], input_data)
interpreter.get_tensor(outputdets[0]['index']) 

keras模型的输出

数组([[0.9934516]],dtype=float32)

tflite模型的输出

数组([[-1.3749948e 23]],数据类型=float32)

附加信息

在keras上训练时的模型精度

98%

输入详情

[{'dtype': numpy.float32,
  'index': 0,
  'name': 'input_3',
  'quantization': (0.0, 0),
  'quantization_parameters': {'quantized_dimension': 0,
   'scales': array([], dtype=float32),
   'zero_points': array([], dtype=int32)},
  'shape': array([  1, 150, 150,   3], dtype=int32),
  'shape_signature': array([  1, 150, 150,   3], dtype=int32),
  'sparsity_parameters': {}}]

输出细节

[{'dtype': numpy.float32,
  'index': 21,
  'name': 'Identity',
  'quantization': (0.0, 0),
  'quantization_parameters': {'quantized_dimension': 0,
   'scales': array([], dtype=float32),
   'zero_points': array([], dtype=int32)},
  'shape': array([1, 1], dtype=int32),
  'shape_signature': array([1, 1], dtype=int32),
  'sparsity_parameters': {}}]

共有1个答案

太叔栋
2023-03-14

在读取结果之前,您需要运行解释器.invoke()。https://www.tensorflow.org/lite/guide/inference#load_and_run_a_model_in_python

按如下方式更新代码

...
...
interpreter.set_tensor(inputdets[0]['index'], input_data)
interpreter.invoke()
result = interpreter.get_tensor(outputdets[0]['index']) 
..
..
 类似资料:
  • 这是我当前抓取图像类型的代码。一旦它检测到了狗,我会试着让它看到检测的准确性。希望这有道理?

  • 我下面的代码产生了常规的tensorflow模型,但当我试图将其转换为tensorflow lite时,它不起作用,我遵循了以下文档。 https://www.tensorflow.org/tutorials/estimator/linear1 https://www.tensorflow.org/lite/guide/get_started 错误信息 文档摘录 TensorFlow Lite转换

  • 这里是一个初学者,你会看到:)我试图将我的keras (.h5)训练模型转换为TensorFlow Lite格式,但我有以下错误; 属性错误: 类型对象 “TFLite转换器” 没有属性 “from_keras_model”

  • 我有一个保存在.pb文件中的模型,它工作正常,但当我使用命令tflite_convert或python api将其转换为tflite模型时,结果是错误的。我发现权重在转换后发生了变化。.pb文件中第一个卷积层的权重如下: 和第一卷积层的权重。tflite文件如下: 似乎有一些关系。 张量流版本是1.12。 命令是 还有另一个类似的问题没有答案:tflite权重

  • 我试图在张量流图中使用条件随机场损失。 我正在执行序列标记任务: 我有一系列元素作为输入。每个元素可以属于三个不同类中的一个。类以一种热编码方式表示:属于类0的元素由向量[表示。 我的输入标签(y)有大小(xx)。 我的网络产生相同形状的日志。 假设我所有的序列都有长度4。 这是我的代码: 我得到以下错误: 文件“/usr/local/lib/python2.7/dist-packages/ten

  • 我正在制作这个CNN模型 ''' 但这是给我一个错误:-InvalidArgumentError:负尺寸造成的减去2从1'{{nodeconv2d_115/Conv2D}}=Conv2D[T=DT_FLOAT,data_format="NHWC",膨胀=[1,1,1,1],explicit_paddings=[],填充="VALID",步幅=[1,2,2,1],use_cudnn_on_gpu=t