tensorflow - IllegalStateException: 错误: 无法运行会话期望 arg[0] 为 uint8 但提供了 int32 || 不支持的数据类型:UBYTE
问题描述
尝试在训练有素的模型 Faster-RCNN 和 Tensorflow 1.13.1 上运行 RunGraphExample frozen_graph.pb , org.deeplearning4j "1.0.0-beta6" (Tensorflow 1.15)
val data: Array[Array[Int]] = new Array[Array[Int]](img.getWidth * img.getHeight);
for (i <- 0 until img.getWidth) {
for (j <- 0 until img.getHeight()) {
val ar: Array[Int] = new Array(3)
ar(0) = color.getRed.byteValue() & 0xff
ar(1) = color.getGreen.byteValue() & 0xff
ar(2) = color.getBlue.byteValue() & 0xff
data(i * img.getHeight + j) = ar
}
}
var arr: INDArray = Nd4j.createFromArray(data)
//.castTo( org.nd4j.linalg.api.buffer.DataType.UBYTE)
错误出现在行inputMap.put(inputs.get(0), shapeArray)
如果 shapeArray 是 int 则错误是:
Unable to run session Expects arg[0] to be uint8 but int32 is provided
如果 shapeArray 很短或 .castTo(UBYTE) 则错误为:
Unsupported data type: UBYTE
or
Unsupported data type: SHORT
从大约 1.0.0-beta3 Deeplearning4j 移除了对val 压缩器 = BasicNDArrayCompressor.getInstance.setDefaultCompression("UINT8")的支持
如何使用 uint8 DataType 将图像正确转换为 INDArray?
解决方案
推荐阅读
- flutter - Flutter:三列 Row:当左右两列大小不等时,中间列如何居中?
- javascript - 我可以将 math.js 对象转换为 JavaScript 函数吗?
- flutter - NoSuchMethodError: 试图调用一个非函数,比如 null: 't0.changeLang'
- c++ - 如何将多个命令行参数添加到可执行 C++
- mongodb - 表示表达式的对象必须只有一个字段
- angular - ndx-datatable 安装在 Angular 11 对等依赖警告上
- linux - “C 编译器无法创建可执行文件”配置 gcc 时出错
- c - 如何在 C 中一次读取 20 行?
- javascript - 如何过滤仅由用户购买的数组
- c# - Logging solution for Apps published to Microsoft Store