prefacio
Esta sección contiene un pequeño ejemplo de cómo comenzar con la antorcha
La explicación en video del código línea por línea está en: https://www.bilibili.com/video/BV1nS4y1u76S?spm_id_from=333.999.0.0
Principalmente sobre ejemplos de regresión lineal.
Crea tus propios datos
Construir un modelo de regresión lineal
completar el proceso de formación
Pantalla de dibujo
Modelo lineal
donde k es el peso y b es el término de sesgo.
En general, el modelo lineal es para ajustar el k y b de los cuales son en realidad w y sesgo
como aquí
código como un todo
Datos de simulación
Agregue ruido blanco gaussiano (un grupo de números aleatorios que se ajustan a una distribución normal con una media de 0 y una varianza de 1) y establezca x en 512 puntos, es decir, el número de muestras es 512
Modelo lineal
Debido a que cada valor de la entrada y cada valor de la salida es en realidad una dimensión de 1, feature_num=1, el modelo lineal es
class LinearModel(nn.Module):
def __init__(self, in_fea, out_fea):
super(LinearModel, self).__init__()
self.out = nn.Linear(in_fea, out_fea)
def forward(self, x):
x = self.out(x)
return x
Definir la función de pérdida y el optimizador
optimizer = torch.optim.SGD(model.parameters(), lr=0.02)
loss_func = nn.MSELoss()
Cambiar la dimensión de los datos a la dimensión de entrada del modelo
Agregar una dimensión a la dimensión de la característica
entrenamiento y visualización
la rutina es
razonamiento directo
pérdida
gradiente claro
retropropagación
actualizar pesos
plt.ion()
for step in range(200):
prediction = model(x)
loss = loss_func(prediction, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if step%10 == 0:
plt.cla()
plt.scatter(x.data.numpy(), y.data.numpy())
plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5)
plt.xlim(0,1.1)
plt.ylim(0, 20)
[w, b] = model.parameters()
plt.text(0, 0.5, 'loss=%.4f, k=%.2f, b=%2f'%(loss.item(), w.item(), b.item() ),fontdict={'size': 20, 'color': 'red'})
plt.pause(0.5)
plt.ioff()
plt.show()
Entre ellos, ion es para abrir el modo interactivo e ioff es para cerrar el modo interactivo, y puede dibujar dinámicamente la imagen para ver los cambios.
Observe dinámicamente la transformación de la línea ajustada
Lectura recomendada:
Mi intercambio de reclutamiento escolar por Internet de 2022
Hablando de la diferencia entre la publicación de algoritmos y la publicación de desarrollo
Resumen de salarios de investigación y desarrollo de reclutamiento de escuelas de Internet
Para series de tiempo, todo lo que puedes hacer.
Número público: coche caracol AI
Mantente humilde, mantente disciplinado, mantente progresista
Envíe [Snail] para obtener una copia del "Proyecto práctico de IA" (AI Snail Car)
Envíe [1222] para obtener una buena nota de cepillado de leetcode
Envíe [AI Four Classics] para obtener cuatro libros electrónicos clásicos de AI