You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复numpy图像转tensor时Argument must be a dense tensor报错

错误原因

用[img]包裹numpy数组时,你得到的是一个Python列表,列表里唯一的元素是那个形状为(128,128,3)的numpy数组。TensorFlow不会自动把列表里的numpy数组展开拼接成高维张量,只会把这个列表识别为长度为1的一维结构,自然和你预期的4维张量形状冲突,就会抛出看到的形状报错。

修正方案
  • 方案1:直接转张量后手动扩维,不需要额外套方括号
img = cv2.imread(r'source_img.jpg')
# 先转成形状为(128, 128, 3)的张量
img_tensor = tf.constant(img, dtype=tf.uint8)
# 在第0位增加batch维度,得到你需要的(1, 128, 128, 3)形状张量
img_tensor_with_batch = tf.expand_dims(img_tensor, axis=0)
  • 方案2:先给numpy数组扩维,再直接转张量
import numpy as np
# 先用numpy给数组扩维,得到形状(1,128,128,3)的numpy数组
img_with_batch = np.expand_dims(img, axis=0)
# 直接传入转换即可,不会触发结构解析错误
img_tensor = tf.constant(img_with_batch, dtype=tf.uint8)

补充提示:cv2读取的图像默认是BGR通道顺序,如果后续要对接按RGB通道训练的模型,需要提前用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)转换通道顺序,避免颜色错乱。

内容的提问来源于stack exchange,提问作者godzillabeast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:39:17