飞桨AI创造营2期-t5-模型训练
(Datawhale34期组队学习)
1知识点
- 建立网络
- 打车例子-预测
- 数字识别-分类
- paddleX
2具体内容
2.1建立网络
2.1.1打车例子-预测
- data
- 定义网络
- 定义loss
- 定义优化器
- 组件训练程序
- 预测
import paddle
#1.data 打车里程与费用
data_x = [3,12,4,7,9]
data_y = [19,40,21,27,32]
#2.网络算法
net = paddle.nn.linear(in_features=1, out_features=1)
#3.loss
loss_func = paddle.nn.MSELoss()
#4.优化器
opt=paddle.optimizer.SGD(parameters=net.parameters())
#5.training
for epoch in range(10):
for x,y in zip(data_x, data_y):
x = paddle.to_tensor([x],dtype='float32')
y = paddle.to_tensor([y],dtype='float32')
infer_y = net(x)
loss = loss_func(infer_y, y)
loss.backward()#反馈求梯度
opt.step()#优化
opt.clear_gradients()#清楚有可能错误的梯度
print(f"Epoch:{epoch}\t loss:{loss.numpy()}")
#6.predict
X = paddle.to_tensor([8],dtype="float32")
infer_y = net(X)
print(f"8km打车价格:{inter_y.numpy()}元。")
2.1.2数字识别-分类
import paddle
import numpy as np
from PIL import Image
#1data
ROOT="./data"
with open(os.path.join(ROOT,'label_dict.txt'))as file:
labels = eval(file.read())#检查是否有恶意代码
#2.network
class Net(paddle.nn.Layer):
def __init__(self):
super(Net, self).__init__()
self.fc1 = paddle.nn.Linear(in_features=3*15*30, out_features=128)
self.fc2 = paddle.nn.Linear(in_features=128, out_features=10)
def forward(self,x):
x = self.fc1(x)
x = self.fc2(x)
returen x
net = Net()
#3.loss
loss_func = paddle.nn.CrossEntropyLoss()
#4.优化器
opt=paddle.optimizer.SGD(parameters=net.parameters())
#5.training
for epoch in range(10):
for img_id in range(1,1000):
img_name = f"{img_id}.jpg"
_img = Image.open(os.path.join(ROOT, img_name))#打开图片文件
_img = np.array(_img).astype("float32").flatten()/255 #转成np的array,展平,、255归一
_img = paddle.to_tensor([_img],dtype='float32')
_label = labels[img_name]
_label = paddle.to_tensor([_label],dtype="int64")
number_prob = net(_img)
loss = loss_func(number_prob, _label)
loss.backward()#反馈求梯度
opt.step()
opt.clear_gradients()#清楚有可能错误的梯度
print(f"Epoch:{epoch}\t loss:{loss.numpy()}")
paddle.save(net.state_dict(), "param")
#6.predict
net.set_state_dict(paddle.load('param'))
_img = Image.open(os.path.join(ROOT, '2000.jpg'))#打开图片文件
_img = np.array(_img).astype("float32").flatten()/255
_img = paddle.to_tensor([_img],dtype='float32')
infer_num = net(_img)
print('predict 2000.jpg的:', paddle.nn.functional.softmax(infer_num))
print('model最大概率标签:', np.argmax(infer_num.numpy()[0]))
补充深度学习的基础,解决网络内问题,保证模型的质量
2.2 paddle
- paddleX
- PaddleNLP
- PaddleDetection
- PaddleSeg
- …
3参考
https://aistudio.baidu.com/aistudio/education/lessonvideo/2253796