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

值错误:仅在第一维度中不支持无。张量“input_tensor”具有无效的形状“[1,无,无,3]”

梁才
2023-03-14

我培训了一个用于对象检测的定制MobileNetV2 SSD模型。我保存了.pb文件,现在我想将其转换为.tflite文件,以便与Coral edge tpu一起使用。

我在CPU上的Windows 10上使用Tensorflow 2.2。

我使用的代码是:

import tensorflow as tf

saved_model_dir = r"C:/Tensorflow/Backup_Training/my_MobileNetV2_fpnlite_320x320/saved_model"
num_calibration_steps = 100

def representative_dataset_gen():
    for _ in range(num_calibration_steps):
        # Get sample input data as a numpy array
        yield [np.random.uniform(0.0, 1.0, size=(1,416,416, 3)).astype(np.float32)]

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]

converter.experimental_new_converter = True

converter.representative_dataset = representative_dataset_gen
converter.target_spec.supported_ops = [
    #tf.lite.OpsSet.TFLITE_BUILTINS_INT8,
    tf.lite.OpsSet.TFLITE_BUILTINS,
    tf.lite.OpsSet.SELECT_TF_OPS
    ]
converter.inference_input_type = tf.int8
converter.inference_output_type = tf.int8

tflite_quant_model = converter.convert()

with open('model.tflite', 'wb') as f:
    f.write(tflite_model)

我尝试了其他线程提出的几个解决方案,也用tf-nightly,tf2.3进行了尝试

因为我是Tensorflow的新手,所以我有几个问题:输入张量到底是什么?我在哪里定义它?有没有可能看到或提取这个输入张量?有人知道如何解决这个问题吗?

整个错误消息:

(tf22) C:\Tensorflow\Backup_Training>python full_int_quant.py
2020-10-22 14:51:20.460948: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2020-10-22 14:51:20.466366: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2020-10-22 14:51:29.231404: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found
2020-10-22 14:51:29.239003: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2020-10-22 14:51:29.250497: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: ip3536
2020-10-22 14:51:29.258432: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: ip3536
2020-10-22 14:51:29.269261: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2020-10-22 14:51:29.291457: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x2ae2ac3ffc0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-10-22 14:51:29.298043: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2020-10-22 14:52:03.785341: I tensorflow/core/grappler/devices.cc:55] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0
2020-10-22 14:52:03.790251: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session
2020-10-22 14:52:04.559832: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: graph_to_optimize
2020-10-22 14:52:04.564529: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 3672 nodes (3263), 5969 edges (5553), time = 136.265ms.
2020-10-22 14:52:04.570187: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 2.637ms.
2020-10-22 14:52:10.742013: I tensorflow/core/grappler/devices.cc:55] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0
2020-10-22 14:52:10.746868: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session
2020-10-22 14:52:12.358897: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: graph_to_optimize
2020-10-22 14:52:12.363657: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 1714 nodes (-1958), 2661 edges (-3308), time = 900.347ms.
2020-10-22 14:52:12.369137: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 1714 nodes (0), 2661 edges (0), time = 60.628ms.
Traceback (most recent call last):
  File "full_int_quant.py", line 40, in <module>
    tflite_model = converter.convert()
  File "C:\Users\schulzyk\Anaconda3\envs\tf22\lib\site-packages\tensorflow\lite\python\lite.py", line 480, in convert
    raise ValueError(
ValueError: None is only supported in the 1st dimension. Tensor 'input_tensor' has invalid shape '[1, None, None, 3]'.

无论我在代码中更改什么,总是有相同的错误消息。我不知道这是否表明在训练期间出现了问题,但没有引人注目的事件。

我很乐意接受任何形式的反馈!

共有1个答案

席俊驰
2023-03-14

啊,用于珊瑚的张量流2.0的对象检测API仍然是一个WIP。我们遇到了许多障碍,可能不会很快看到此功能。我建议现在使用 tf1.x aPI。这是一个很好的教程:)https://github.com/Namburger/edgetpu-ssdlite-mobiledet-retrain

 类似资料:
  • 我正在尝试将我的ensorflow模型(2.0)转换为ensorflow lite格式。我的模型有两个输入层,如下所示: 然后,我在层上执行一些张量操作,并将模型保存如下(没有训练,因此没有可训练的参数,只有一些线性代数操作,我想移植到android) 我得到了我的tensorflow.h5模型,因此,当我尝试将其转换为tensorfflow lite时,我得到了以下错误: 我知道,在张量流1.x

  • 我正在尝试实现tensorflow回归模型,我的数据形状是train_X=(200,4)和train_Y=(200,)。我得到的形状错误,这是我的一段代码,请任何人都能提到我在哪里做错了。 df=pd。读取\u csv('all.csv') df=df。下降(“时间”,轴=1) 打印(df.descripe())#以了解数据集 列车Y=df[“功率”] 列车X=df。下降('功率',轴=1) 列车

  • 这是我的测试代码。但它无法运行。终端总是给我这个错误: 回溯(最后一次调用): 文件“desktop/test.py”,第28行,在loss=tf中。缩减平均值(tf.reduce\u和(tf.square(ys预测),缩减指数=[1]) 文件“/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/ops/ma

  • 我是张量流和机器学习的新手。我正在尝试创建一个具有张量流的情感分析 NN。 我已经建立了我的体系结构,并试图训练模型,但我遇到了错误 ValueError:无法为具有形状'(?,100)'的张量'InputData/X: 0'提供形状(32,2)的值 我认为错误与我的输入“layer net=tflearn.input_data([None,100])”有关。我正在学习的教程建议使用这种输入形状,

  • 当我在Kubuntu 17.04上使用Ionic 3安装了Java8时,我在签署一个Ionic android apk时遇到了这个错误 我得到的错误是: java版本 我已经安装了Android Studio,它运行良好,我测试了应用程序源代码,它在模拟器上运行没有问题。

  • 问题内容: 尝试运行声纳测试,但失败了: 我的jenkins控制台输出: 如何解决此错误信息? 问题答案: 我看到错误: 您通过以下步骤开始了该过程: 确保翻一番,以使找到实际的文件夹。 那是: 有关更多信息,请参见分析源代码/分析参数。 该OP巴达尔·辛格的报告中评论: 这是由于我在文件中提到的文件夹路径错误