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

如何在Matlab中用64x64图像训练原输入为224x224的深度学习网络

在MATLAB中用64×64图像训练原224×224输入的深度学习网络

要直接用64×64的RGB图像训练原本设定为224×224输入的深度学习网络,无需缩放图像,可按以下步骤在MATLAB中实现:

1. 修改网络输入层尺寸

原网络的输入层固定为224×224×3,我们需要调整它来适配64×64的图像,有两种方式:

  • 固定适配64×64:直接将输入层的尺寸设为64×64×3,适合只需要处理64×64图像的场景:
    % 自定义网络时初始化输入层
    inputLayer = imageInputLayer([64 64 3], 'Name', 'input');
    % 如果是加载的预训练网络(比如ResNet50),替换输入层
    net = resnet50;
    net.Layers(1) = imageInputLayer([64 64 3], 'Name', 'input');
    
  • 兼容任意尺寸(含64×64):用NaN表示高度和宽度维度可接受任意大小,对应你给出的示例代码,这种方式让网络能处理不同尺寸的图像:
    imageSize = [NaN NaN 3]; % NaN代表任意高/宽,3代表RGB三通道
    inputLayer = imageInputLayer(imageSize, 'Name', 'input');
    

2. 适配后续网络层(关键)

如果网络包含全连接层,输入尺寸从224×224改成64×64后,全连接层的输入维度会发生变化,必须调整:
比如原网络最后一个卷积层在224×224输入下输出7×7×512的特征图,对应全连接层输入为7×7×512=25088;换成64×64输入后,假设卷积步长、padding不变,特征图尺寸会变为2×2×512,此时全连接层的输入维度要改成2×2×512=2048,示例代码:

% 替换原全连接层,以分类10类为例
fcLayer = fullyConnectedLayer(10, 'Name', 'fc', 'InputSize', 2048);
% 找到原网络中全连接层的位置并替换
net.Layers(find([net.Layers.Type] == 'FullyConnectedLayer')) = fcLayer;

如果网络是纯卷积结构(无全连接层),则无需这一步,卷积层会自动适配输入尺寸。

3. 准备64×64图像数据集

直接加载64×64的图像,不需要做resize操作:

% 加载数据集,按文件夹分类标签
ds = imageDatastore('你的图像文件夹路径', ...
    'IncludeSubfolders', true, ...
    'LabelSource', 'foldernames');

% 可选:验证图像尺寸
sampleImg = imread(ds.Files{1});
disp(size(sampleImg)); % 应显示 [64 64 3]

4. 启动训练

用修改后的网络和数据集训练即可:

% 设置训练选项
trainingOpts = trainingOptions('adam', ...
    'InitialLearnRate', 1e-4, ...
    'MaxEpochs', 20, ...
    'MiniBatchSize', 32, ...
    'ValidationData', 验证数据集, ...
    'ValidationFrequency', 5, ...
    'Verbose', true, ...
    'Plots', 'training-progress');

% 开始训练
trainedNet = trainNetwork(ds, net, trainingOpts);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:33:11