这是一份建议分工,不是死规定。B、C、D 各负责一个模型(SVM + PCA / MLP / CNN):代码、调参、报告里对应的章节由同一个人写——谁调参谁解释。A 负责数据管线、合并 notebook 和跨模型的章节。每个人在自己的模块里怎么设计、试什么、用什么超参,都自己发挥;唯一的硬规则是:四个人不要同时改同一个 .ipynb——B / C / D 各用自己的 dev notebook,只有 A 改 master.ipynb。 截止 10-30(周五)23:59,「第几周」只是参考节奏。
master.ipynb
common.py
a2/
dev_svm.ipynb
dev_mlp.ipynb
dev_cnn.ipynb
results/
figs/
AI_LOG.md
print_env()
to_float01
flat
standardize
run_grid
pick_best
save_final
get_eval_set()
assert X_tr_img.shape == (25600,28,28,3)
Examples of preprocessed data
merge_nb.py
# [sec 3.2 | owner C]
make_final_table()
plot_confusions()
error_overlap()
A2_STAGE="DRYRUN"
from common import
svm_model
mlp_model
cnn_model
grep -nE "X_test|y_test"
error_overlap
a2-code-SID1-SID2-SID3-SID4.ipynb
.pdf
/Users/<姓名>/
自己发挥:探索想展示什么、预处理选哪些、报告的叙事线怎么串,都由你定。给别人的只有 common.py 里那几个名字,其余随意。
你是笔记本这条链的单点:merge_nb.py 写好用法,让 C 能顶替你。
PCA(100)
SVC(kernel="rbf")
make_svm(n_components, C, gamma_mult)
Pipeline([("pca", PCA(...)), ("svc", SVC(kernel="rbf", ...))])
StandardScaler
whiten
n_components
C
gamma_mult
gamma
"scale"
run_grid("svm", ...)
fit_time_s
n_support
pick_best()
BEST_SVM
tune_svm.csv
X_test
save_final("svm", ...)
BEST_CNN
final_svm.json
自己发挥:超参取值范围、PCA 保留多少维、要不要换成别的算法(RF / kNN …),都按你小测和实验的结果自己定;改了在报告里说明理由就行。
网格的预测先记下来再看结果,报告里才有「是否符合预测」可讨论。
build_mlp(hidden_units, dropout, learning_rate, n_hidden_layers=2)
Input(2352)
Dense(h, relu)
Dropout
Dense(9, softmax)
sparse_categorical_crossentropy
flat(standardize(X_tr_img))
model.summary()
learning_rate
hidden_units
dropout
n_hidden_layers
batch_size
epochs_run
BEST_MLP
best_epoch
save_final("mlp", ...)
A2-report-SID1-SID2-SID3-SID4.pdf
自己发挥:MLP 的层数 / 宽度 / 正则 / 优化器怎么搭、style sheet 订多细,都由你定。
MLP 算力最轻,所以你兼任报告主编,也是 A 的后备。style sheet 越早发越有人遵守。
build_cnn(base_filters, dropout, learning_rate, kernel_size=3, n_conv_blocks=2)
Conv2D
BatchNormalization
ReLU
MaxPool2D
GlobalAveragePooling2D
Dense(64)
Dense(9)
RandomFlip
base_filters
kernel_size
n_conv_blocks
base_filters=64
sec_per_epoch
save_final("cnn", ...)
final_cnn.json
自己发挥:卷积块怎么搭、要不要数据增强、网格取哪些值,都自己定。只有两条是 spec 的硬规定:模型要自己搭(不能用 keras.applications)、至少调 3 个超参。
keras.applications
CNN 是全组算力最重、也最容易跑不完的一块,留足挂夜的时间。