系統(tǒng)開發(fā)包括什么seo百度推廣
*分類是離散的,回歸是連續(xù)的
下載數(shù)據(jù)集
train=True:下載訓練集
邏輯斯蒂函數(shù)保證輸出值在0-1之間
能夠把實數(shù)值映射到0-1之間
?導函數(shù)類似正態(tài)分布
?其他飽和函數(shù)sigmoid functions
循環(huán)神經(jīng)網(wǎng)絡經(jīng)常使用tanh函數(shù)
與線性回歸區(qū)別
塞戈馬無參數(shù),構(gòu)造函數(shù)無區(qū)別
?更改損失函數(shù)MSE->BCE損失(越小越好)
分布的差異:KL散度,cross-entropy交叉熵?
二分類的交叉熵
?
# -*- coding: utf-8 -*-
# @Time : 2023-07-18 20:26
# @Author : yuer
# @FileName: exercise06.py
# @Software: PyCharm
import matplotlib.pyplot as plt
import numpy as np
import torch# 數(shù)據(jù)集
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])# 先根據(jù)x算出y值再根據(jù)y的范圍找到分類class logisticRegressionModel(torch.nn.Module):def __init__(self):super(logisticRegressionModel, self).__init__()self.linear = torch.nn.Linear(1, 1)# x_data,y_data都是一維,與線性回歸相比構(gòu)造沒有函數(shù)區(qū)別def forward(self, x):y_pred = torch.sigmoid(self.linear(x))return y_predmodel = logisticRegressionModel()# 默認情況size_average=True 即loss是1/n倍的,False設置loss不除n
criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# SGD梯度下降優(yōu)化方法 初始化w,b都為0for epoch in range(1000):y_pred = model(x_data)loss = criterion(y_pred, y_data)print(epoch, loss.item())optimizer.zero_grad() # 清空梯度loss.backward() # 反饋算梯度并更新optimizer.step() # 更新w,b的值print('w=', model.linear.weight.item())
print('b=', model.linear.bias.item())x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred=', y_test.data)x = np.linspace(0, 10, 200) # 在線性空間中以均勻步長生成數(shù)字序列;在0-10之間的200個點
x_t = torch.Tensor(x).view((200, 1)) # 轉(zhuǎn)換為200*1的矩陣
y_t = model(x_t) # 利用模型訓練
y = y_t.data.numpy()
plt.plot(x, y)
plt.plot([0, 10], [0.5, 0.5], c='r')
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()