for epoch in range(num_epochs):
for images, labels in train_loader:
optimizer.zero_grad() # 清零梯度!
outputs = model(images)
loss = criterion(outputs, labels)
loss.backward() # 反向传播,计算梯度
optimizer.step() # 更新权重
print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
```
注意到那个 `optimizer.zero_grad()` 了吗?这是初学者常忘的一步,如果不清零梯度,梯度会累积,导致训练出错。深度学习代码给了你巨大的灵活性,但也要求你对计算过程有更清晰的控制。
模型训练好了,怎么用?部署是关键一步。你可以用Flask快速封装一个API:
```python
from flask import Flask, request, jsonify
import joblib
import numpy as np
app = Flask(__name__)
model = joblib.load('model.pkl') # 加载模型
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
features = np.array(data['features']).reshape(1, -1)
prediction = model.predict(features)
return jsonify({'prediction': int(prediction[0])})
if __name__ == '__main__':
app.run(debug=True)
```
这样,任何能发送HTTP请求的程序(比如一个手机App或网页前端)都可以调用你的AI模型了。看,从研究到生产,Python贯穿始终。
聊了这么多,其实核心就一点:Python人工智能代码的学习,是一个“理论-实践-反思”的螺旋上升过程。不要只满足于调包,要尝试理解关键参数的意义;不要害怕复杂的项目结构,它最终会节省你的时间;更不要回避部署,那是价值实现的最后一公里。
最好的学习方式,就是找一个你感兴趣的真实问题(哪怕是Kaggle上的入门竞赛),用本文提到的流程,亲手把代码敲一遍,踩一遍所有可能的坑。过程中,你会对每一个环节有肌肉记忆般的理解。
人工智能的世界代码驱动,而Python是这趟旅程中最可靠、最强大的交通工具。现在,引擎已经启动,代码世界的大门已经敞开,下一步,就是你的实践了。开始写你的第一行,或者下一行AI代码吧。
