核心内容摘要
嘘!你知道吗?《我家辣妹》第二集,这日子可太值得期待了!
目录
变量 (Variables)给数据贴标签命名规范ML 领域的潜规则
四大核心数据类型 (The Core Types)A. Float (浮点数) —— ML 的绝对主角B. Int (整数) —— 计数器C. Bool (布尔值) —— 逻辑开关D. String (字符串) —— 文本与路径必须要会的技能类型转换 (Casting)
f-string格式化输出神器基础用法进阶用法控制数字精度 (ML 必学)
实战演练模拟训练日志课后思考 (Check Your Understanding)
变量 (Variables)给数据贴标签在 Python 中变量不需要“声明类型”不像 C 或 Java 需要写int a 1。
你直接赋值Python 会自动识别。
命名规范ML 领域的潜规则虽然 Python 推荐用全小写加下划线如my_variable但在机器学习的数学公式实现中我们经常打破这个规则以匹配数学符号常规变量learning_rate,batch_size,model_path(使用 snake_case)矩阵/数据集X(通常大写代表特征矩阵),y(通常小写代表标签)参数w(权重 weights),b(偏置 bias)# 定义变量非常简单左边是名字右边是值 epoch 10 # 训练轮数 learning_rate
001 # 学习率 is_training True # 是否正在训练 model_name ResNet50 # 模型名称 # 变量的值是可以随时修改的 epoch epoch 1 # 现在 epoch 变成了
四大核心数据类型 (The Core Types)Python 有很多类型但做算法模型时你 95% 的时间只在和下面这四种打交道。
A. Float (浮点数) —— ML 的绝对主角机器学习的核心是微积分和矩阵运算结果几乎永远是小数。
场景模型的准确率 (
0.
、损失函数值 (
0.
、权重参数。
注意哪怕是
0在计算机眼里它也是浮点数而不是整数。
B. Int (整数) —— 计数器场景数据集的索引第 5 张图、训练的轮数第 10 轮、分类的类别 ID0 代表猫1 代表狗。
C. Bool (布尔值) —— 逻辑开关只有两个值True和False注意首字母大写。
场景shuffleTrue(打乱数据),use_gpuFalse(使用 CPU),pretrainedTrue(使用预训练模型)。
D. String (字符串) —— 文本与路径用单引号 或双引号 包裹。
场景文件路径./data/train.csv自然语言处理中的原始文本I love AI。
必须要会的技能类型转换 (Casting)数据读入时经常格式不对比如从文本文件读入的数字默认是字符串你需要手动转换。
s
14159 # print(s
# ❌ 报错字符串不能和数字相加 f float(s) # ✅ 强制转换为浮点数 print(f
# 输出:
14159 i int(
3.
# ✅ 浮点转整数注意是直接截断不是四舍五入 print(i) # 输出:
f-string格式化输出神器在训练神经网络时你经常盯着屏幕看滚动的日志。
如果打印得乱七八糟会非常影响判断。
Python
6 引入的f-string(formatted string literal) 是目前最推荐的写法。
基础用法在字符串的引号前加一个f然后在字符串内部用花括号{}包裹变量。
acc
85 name YOLOv5 # 老式写法 (不推荐容易眼花) print(模型 name 的准确率是 str(acc)) # ✅ f-string 写法 (推荐) print(f模型 {name} 的准确率是 {acc})进阶用法控制数字精度 (ML 必学)损失函数Loss通常是很长的小数如
1293847192。
直接打印太乱我们通常只看前4位或前6位。
语法{变量:格式}.4f表示保留小数点后 4 位浮点数。
.2%表示显示为百分比保留 2 位小数。
loss
1293847192 accuracy
98765432 # 这里的 :.4f 和 :.2% 是重点 print(fLoss: {loss:.4f}) # 输出: Loss:
1294 (自动四舍五入) print(fAccuracy: {accuracy:.2%}) # 输出: Accuracy:
9
77%
实战演练模拟训练日志让我们把上面学到的组合起来写一段模拟神经网络训练过程的代码。
# 模拟训练参数配置 model_name DeepLabV3 batch_size 32 # int total_images 1000 # int current_loss
052391 # float # 计算一下大概需要多少个 batch 才能跑完 (简单的数学运算) # total_images / batch_size 结果是 float我们需要转成 int steps_per_epoch int(total_images / batch_size) # 打印训练日志 print(- *
# 打印30个减号作为分割线 print(f开始训练模型: {model_name}) print(f总图片数: {total_images}, 批次大小: {batch_size}) print(f每轮需要跑 {steps_per_epoch} 步) print(- *
# 模拟打印某一步的结果 step 15 print(fStep [{step}/{steps_per_epoch}] - Loss: {current_loss:.4f})运行结果------------------------------ 开始训练模型: DeepLabV3 总图片数: 1000, 批次大小: 32 每轮需要跑 31 步 ------------------------------ Step [15/31] - Loss:
0524课后思考 (Check Your Understanding)请在你的 Python 环境Jupyter Notebook 或 PyCharm中尝试解决这个问题问题假设你有两个变量precision
81234recall
78912请计算 F1-Score公式如下并使用 f-string 打印结果要求保留 3 位小数。
(如果你写完了或者卡住了可以随时把代码发给我我来帮你 Review)