首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >条纹切片的误差--流光体

条纹切片的误差--流光体
EN

Stack Overflow用户
提问于 2020-11-15 14:14:57
回答 2查看 1.2K关注 0票数 1

我正面临着坦索弗莱的问题。我知道这个错误:

不支持

类型的INT32 (2)。节点STRIDED_SLICE (编号2)未能在状态1调用

我所做的是:

我用MNIST数据训练了一个模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  model = tf.keras.Sequential([
  tf.keras.layers.InputLayer(input_shape=(28, 28)),
  tf.keras.layers.Reshape(target_shape=(28, 28, 1)),
  tf.keras.layers.Conv2D(filters=12, kernel_size=(3, 3), activation='relu'),
  tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(10)
])

我使用整数量化来转换模型.但是,当我调用模型时,它会抛出该错误。

我在看striced_slice.cc时发现了这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      switch (output->type) {
        case kTfLiteFloat32:
          reference_ops::StridedSlice(op_params,
                                      tflite::micro::GetTensorShape(input),
                                      tflite::micro::GetTensorData<float>(input),
                                      tflite::micro::GetTensorShape(output),
                                      tflite::micro::GetTensorData<float>(output));
          break;
        case kTfLiteUInt8:
          reference_ops::StridedSlice(
              op_params, tflite::micro::GetTensorShape(input),
              tflite::micro::GetTensorData<uint8_t>(input),
              tflite::micro::GetTensorShape(output),
              tflite::micro::GetTensorData<uint8_t>(output));
          break;
        case kTfLiteInt8:
          reference_ops::StridedSlice(op_params,
                                      tflite::micro::GetTensorShape(input),
                                      tflite::micro::GetTensorData<int8_t>(input),
                                      tflite::micro::GetTensorShape(output),
                                      tflite::micro::GetTensorData<int8_t>(output));
          break;
        default:
          TF_LITE_KERNEL_LOG(context, "Type %s (%d) not supported.",
                             TfLiteTypeGetName(input->type), input->type);

因此,不支持int32。我真不知道该如何处理这种问题。有任何方法来改变这个节点上的行为吗?我应该在量化步骤中做一些不同的事情吗?

我所做的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def representative_data_gen():
  for input_value in tf.data.Dataset.from_tensor_slices(train_images).batch(1).take(100):
    yield [input_value]

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_data_gen
# Ensure that if any ops can't be quantized, the converter throws an error
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.int8
converter.inference_output_type = tf.int8

tflite_model = converter.convert()
open("model_int8.tflite", "wb").write(tflite_model)

PD:我正在使用stm32中的tensorflow-lite。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-11-16 04:43:01

当您执行全整数量化时,您的输入和输出应该是1字节长(在您的例子中是int8)。给出输入的int8值,您将能够调用模型。

票数 0
EN

Stack Overflow用户

发布于 2021-02-16 03:52:17

我只是简单地将INT32支持添加到striced_slice.cc中来解决这个问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
case kTfLiteFloat32:
  reference_ops::StridedSlice(op_params,
                              tflite::micro::GetTensorShape(input),
                              tflite::micro::GetTensorData<float>(input),
                              tflite::micro::GetTensorShape(output),
                              tflite::micro::GetTensorData<float>(output));
  break;
case kTfLiteUInt8:
  reference_ops::StridedSlice(
      op_params, tflite::micro::GetTensorShape(input),
      tflite::micro::GetTensorData<uint8_t>(input),
      tflite::micro::GetTensorShape(output),
      tflite::micro::GetTensorData<uint8_t>(output));
  break;
case kTfLiteInt8:
  reference_ops::StridedSlice(op_params,
                              tflite::micro::GetTensorShape(input),
                              tflite::micro::GetTensorData<int8_t>(input),
                              tflite::micro::GetTensorShape(output),
                              tflite::micro::GetTensorData<int8_t>(output));
  break;
case kTfLiteInt32:
  reference_ops::StridedSlice(op_params,
                              tflite::micro::GetTensorShape(input),
                              tflite::micro::GetTensorData<int8_t>(input),
                              tflite::micro::GetTensorShape(output),
                              tflite::micro::GetTensorData<int8_t>(output));
  break;
default:
  TF_LITE_KERNEL_LOG(context, "Type %s (%d) not supported.",
                     TfLiteTypeGetName(input->type), input->type);
  return kTfLiteError;

我复制了kTfLiteInt8案例并创建了kTfLiteInt32案例。

因为我知道输入数据实际上是int8类型,所以我只是将其转换为int8。

我已经在ESP32微控制器上测试过它。我没有运行一套完整的测试,但有几个样本,它发挥了预期的作用。

这是个解决办法。真正的修复应该在转换器中完成,在那里它使用TFLITE_BUILTINS_INT8完全量化模型。不知何故,它量化了float32类型,但int32停留在其中一个层中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64850356

复制
相关文章
如何修改HLS视频流的ts切片时长?
我们在一个医疗行业视频直播服务的项目中了解到,该项目采用EasyDSS直播服务,系统对接中,因为获取的录像时长始终不能准确定位到秒,要么多几秒、要么少几秒,一直很苦恼,于是找到了我们寻找解决办法。
TSINGSEE青犀视频
2021/11/04
1.5K0
bootstrap 表格 条纹
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
用户5760343
2022/01/10
5040
bootstrap 表格 条纹
图像条纹噪声消除
sensor中由于传感器的差异产生固定模式噪声(FPN),FPN与条纹噪声有相似之处。
AomanHao
2022/01/14
2.2K0
图像条纹噪声消除
BZOJ 2940: [Poi2000]条纹(Multi-Nim)
Description     条纹游戏是一个双人的游戏。所需要的物品有一个棋盘以及三种颜色的长方形条纹,这三种颜色分别是红色、绿色和蓝色。所有的红色条纹的尺寸是c*1,所有的绿色条纹的尺寸是z*1,所有的蓝色条纹的尺寸是n*1,这里c,z,n是正整数。每种颜色的条纹每个游戏者都拥有无限多个。        一个棋盘是一个尺寸为p*1的长方形,由p个1*1的方格组成。        游戏者轮流走,每一步都是由一个游戏者任选一种长方形条纹覆盖到棋盘上,并要求遵循以下规则: l        条纹不能伸出棋盘
attack
2018/04/10
6700
Css渐变与斑马条纹
渐变函数linear-gradient,通过linear-gradient创建的背景可以通过background-size控制。
wade
2020/04/24
1.7K0
Css渐变与斑马条纹
测量误差?什么误差?测量什么?
买了一台普源的DM3058,官网售价3980元,用来测量100nA误差范围内的电流,由于预算有限,供应商同时推荐了固纬GDM-8341万用表,分辨率可测到10nA。某宝售价2260元,与DM3058相比省下来1720元!
硬件大熊
2022/06/23
9040
测量误差?什么误差?测量什么?
误差函数
其中, 表示神经网络的输出, 表示监督数据( 采用 one-hot 编码), 表示数据的维度。
hotarugali
2022/03/03
9310
标准误差
标准误差是当前应用最广泛、最基本的一种随机误差的表示方法,当标准误差求得后,平均误差和极限差即可求得故国际上普遍采用标准误差作为实验结果质量的数字指标
为为为什么
2023/02/21
1.1K0
磁盘I/O读写跟不上HLS流ts切片速度,如何解决?
TSINGSEE青犀视频平台的按需直播是一个很实用的功能,在实际项目中,开启按需直播能够有效节省系统流量,但在很多使用EasyNVR平台的大型项目中,随着非按需通道数量的增多,会导致磁盘的读写增高,导致磁盘的I/O读写跟不上EasyNVR的hls流ts切片产生的速度。
TSINGSEE青犀视频
2021/11/09
9370
Python进阶之Pandas入门(五) 数据流切片,选择,提取
Pandas是数据分析中一个至关重要的库,它是大多数据项目的支柱。如果你想从事数据分析相关的职业,那么你要做的第一件事情就是学习Pandas。
HuangWeiAI
2020/02/13
1.8K0
Python进阶之Pandas入门(五) 数据流切片,选择,提取
origin带误差线的柱状图_怎么加误差棒
软件版本:OriginPro 2021b (64-bit) SR2 9.8.5.212 (学习版) 本期目标:
全栈程序员站长
2022/11/11
6.5K0
origin带误差线的柱状图_怎么加误差棒
【Python】序列 - 数据容器 ( 序列简介 | 序列切片 | 省略 起始坐标 / 结束坐标 / 步长 切片 | 列表切片 | 字符串切片 | 元组切片 | 步长 -1 的切片 )
序列 指的是 内容 连续 , 有序 , 可以使用 下标索引 访问 的 数据容器 ;
韩曙亮
2023/10/11
3270
【Python】序列 - 数据容器 ( 序列简介 | 序列切片 | 省略 起始坐标 / 结束坐标 / 步长 切片 | 列表切片 | 字符串切片 | 元组切片 | 步长 -1 的切片 )
mse均方误差例题_误差函数计算器
本人最近需要写多个仿真,需要大量用到MSE(均方误差)计算,于是干脆将MSE运算封装为函数,后续使用直接进行调用即可。
全栈程序员站长
2022/11/19
9500
逐渐增加样本训练模型实现误差最小且误差值接近1.41%的最小P(误差)值。
Q1_final.m clear all; close all; clc; %% Set-Up: given parameters and validation data % Given parameters n = 2; % number of feature dimensions N_train = [10;100;1000]; % number of training samples N_val = 10000; % nu
裴来凡
2022/05/28
9400
逐渐增加样本训练模型实现误差最小且误差值接近1.41%的最小P(误差)值。
切片
#切片 #切片指从现有列表中,获取一个子列表 #创建一个列表,一般创建列表时,变量的名字会使用复数 stus = ['孙悟空','猪八戒','沙和尚'] #列表的索引可以是负数,如果索引是负数,则从后向前获取元素 print(stus[-1]) #通过切片来获取指定的元素 #语法:列表[起始:结束],通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素 #做切片操作时,总会返回一个新的列表,不会影响原来的列表 #切片的起始位置和结束位置的索引都可以省略不写 #如果省略结束位置,则会一直截取到最后,如果省略开始位置,则会从第一个元素开始截取 print(stus[1:]) print(stus[:2]) print(stus[0:2]) #语法:列表[起始:结束:步长] #步长表示每次获取元素的间隔,默认值是1 #步长不能是0,但是可以是负数 #步长如果是负数,则会从列表的后部向前面取元素 print(stus[0:2:1])
py3study
2020/01/20
8950
python的特性 - 切片
前面我们知晓,有些数据类型可以直接使用索引index来访问序列中的元素,同时索引还可以分为正向和负向的。 Python中的切片操作,也会用到索引。而且切片非常灵活,可以很方便地对有序序列进行切片操作,使用频率非常高。
py3study
2020/01/05
6890
【短道速滑三】去除图像竖直(垂直)条纹算法
最近一个朋友发了一个效果图,是关于条纹去除的,问我有没有什么好的方法,实现这个功能,给我的参考图片如下所示:
用户1138785
2020/07/27
1.9K0
[Python]切片Slice的运用
取指定索引范围的操作,用循环十分繁琐,因此Python提供了切片(Slice)操作符,能大大简化这种操作。
祥知道
2020/03/10
1.7K0
切片的内部实现
type slice struct {         array unsafe.Pointer         len   int         cap   int } 第一个字段arra
李海彬
2018/03/27
1.1K0
切片的内部实现
偏斜类的误差度量
“Machine Learning System Design:——Error metrics for skewed classes”
讲编程的高老师
2021/05/13
5510
偏斜类的误差度量

相似问题

银条纹GridField dataFieldByName误差

24

切块切片中的EOF误差

10

条纹误差对象object(Stripe\Exception\InvalidRequestException)

14

熊猫DataFrame DatetimeIndex切片误差

13

数据切片抛出定界误差

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文