用mnist简单训练个逻辑回归(单层神经网络)
先说个小事情
这个功能挺方便。
大体上总结以下流程
1.先整理数据集(这个是固定的东西,没什么可动的。)
import requests
DATA_PATH = Path("data")
PATH = DATA_PATH / "mnist"
PATH.mkdir(parents=True, exist_ok=True)
URL = "https://github.com/pytorch/tutorials/raw/master/_static/"
FILENAME = "mnist.pkl.gz"
if not (PATH / FILENAME).exists():
content = requests.get(URL + FILENAME).content
(PATH / FILENAME).open("wb").write(content)
再对数据集进行适当的变换,变成适合torch的形式
import pickle
import gzip
with gzip.open((PATH / FILENAME).as_posix(), "rb") as f:
((x_train, y_train), (x_valid, y_valid), _) = pickle.load(f, encoding="latin-1")
#每张图片尺寸是 28 x 28,被存储为长度为 784(=28x28)的向量。可以利用 `matplotlib` 看看其中一张图像,想要将其展示出来首先还需要先把其 reshape 为2D。
#```python
from matplotlib import pyplot
import numpy as np
pyplot.imshow(x_valid[1].reshape((28, 28)), cmap="gray")
print(x_train.shape)
#改变数据集形式
import torch
x_train, y_train, x_valid, y_valid = map(
torch.as_tensor, (x_train, y_train, x_valid, y_valid)
)
n,c = x_train.shape
print(x_train,y_train)
print(n,c)