尽可能少地借助LLMs完成编程小练习, 参考https://zh.d2l.ai Pytorch版
1、下载MNIST数据训练集的MAT格式数据文件,将MAT样本按70%-30%划分为train data和test data, 根据样本的标签创建文件夹. 按照目录结构./mode/label/*.jpg分别将train data和test data的每一个样本存储为灰度图像, 其中mode $\in$ {train, test}
2、从上述MAT文件各类标签样本中随机选取N个样本分别使用PCA、TSNE和UMAP可视化
3、将MAT样本按70%-30%划分为train data和test data
4、使用torch的nn.Module 定义一个三层全连接神经网络
5、根据1的目录结构定义data loader, 并将图像样本向量化
6、使用train data 用Pytorch自带优化器训练4的神经网络,每一个epoch打印训练交叉熵损失、训练acc、测试acc, 并使用tensorboard记录上述3个指标。
7、使用imagenet预训练的ResNet18, 替换输出层用于6的分类任务,替换第一个卷积层适配所存储的灰度图像作为输入. 除了第一个卷积层和倒数后3层外, 冻结其他层的参数,在此基础上重复问题6的训练过程
8、输出test data在问题7模型的最后一层,并保存为npy格式;分别使用PCA、TSNE和UMAP可视化。