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

Julia中如何为FluxML MLP定义指定类型的图像数组?

解决Julia中初始化Array{Array{Gray{Normed{UInt8,8}},2},1}类型数组的问题

首先咱们来拆解你遇到的报错原因:你尝试用Array{Array{ColorTypes.Gray{FixedPointNumbers.Normed{UInt8,8}},2}}(10)初始化数组,但Julia的数组构造函数不支持直接传入单个整数来创建这种嵌套数组——报错信息里也明确提示了,必须搭配UndefInitializer(也就是undef)来指定未初始化的内存空间。

下面给你几种适配不同需求的正确初始化方式:

1. 创建未初始化的嵌套数组

如果你只是需要一个长度为10、元素类型为Array{Gray{N0f8},2}的空架子数组(每个元素暂时未赋值),可以用undef初始化器:

# 先导入必要的包
using ColorTypes, FixedPointNumbers

# 简化类型写法:Gray{Normed{UInt8,8}} 等价于 Gray{N0f8}
x = Array{Array{Gray{N0f8},2},1}(undef, 10)

执行后会得到一个长度为10的数组,每个位置是未初始化的Array{Gray{N0f8},2}对象,之后你可以逐个给元素赋值,比如x[1] = Gray.(rand(28,28))。

2. 创建每个元素都是指定尺寸的空灰度图像数组

如果你的图像都是固定尺寸(比如和MNIST一样是28x28),用列表推导式直接生成每个元素会更直观:

using ColorTypes, FixedPointNumbers

# 生成10个28x28的未初始化灰度图像数组
imgs = [Array{Gray{N0f8},2}(undef, 28, 28) for _ in 1:10]

这种方式生成的数组,每个元素都是独立的2D灰度数组,完全符合你需要的类型结构。

3. 从本地图像集加载并生成目标数组

这应该是你最终的核心需求:替换MNIST数据集为自己的图像。可以借助Images包加载图像并转成灰度格式:

# 导入所需包
using Images, ColorTypes, FixedPointNumbers

# 假设你有10张图像的路径列表
image_paths = ["path/to/img1.jpg", "path/to/img2.png", ..., "path/to/img10.png"]

# 遍历路径加载图像,转成灰度格式后存入数组
imgs = [Gray.(load(path)) for path in image_paths]

执行完成后,imgs就是类型为Array{Array{Gray{N0f8},2},1}的数组,和MNIST数据集的imgs结构完全一致,可以直接替换到你复用的MLP代码中使用。

内容的提问来源于stack exchange,提问作者Timothée HENRY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:35:06