1

## Day24 參加職訓(機器學習與資料分析工程師培訓班)，Python程式設計 & Pytorch

``````from tensorflow.keras.datasets import mnist

(train_x, train_y), (test_x, test_y) = mnist.load_data()
``````
``````# 檢視內容
import matplotlib.pyplot as plt

plt.gcf().set_size_inches(15,4)

for i in range(5):
axe = plt.subplot(1, 5, 1+i)
axe.imshow(train_x[i], cmap = 'gray')
axe.set_title(f'label = {train_y[i]}', fontsize = 18)
plt.show()
``````
``````from tensorflow.keras.utils import to_categorical

X_train = train_x.reshape(60000, 28*28)
X_test = test_x.reshape(10000, 28*28)

X_train = X_train.astype('float')/255 #資料型態從 unit8 轉成浮點數，並做正規化
X_test = X_test.astype('float')/255

Y_train = to_categorical(train_y)  # one-hot encoding
Y_test = to_categorical(test_y)
``````
``````from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
model.add(Dense(512, activation = 'relu', input_dim = 28*28))

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy
model.fit(X_train, Y_train, epochs=10, batch_size=128)
``````
``````test_loss, test_accuracy = model.evaluate(X_test, Y_test)
print(f'Loss = {test_loss}, Accuracy = {test_accuracy}')
``````
``````#儲存模型
model.save('mnist_model.h5')

model.summary()
``````

``````!pip install torch
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np

def plot_fit(option=0):
plt.scatter(X,Y)
mx=np.array([-20,20])
if option==0:
[w,b]=[-7,5]
else:
[w,b]=model.parameters()
w=w[0][0].detach().item()
b=b[0].detach().item()
my=w*mx+b
plt.plot(mx,my,'r')
plt.show()

X=torch.randn(200,1)*10
Y=3*X+torch.randn(200,1)*5
plot_fit()

# step2: preprocessing X,Y

# step3: build model
model=nn.Linear(1,1)
torch.nn.init.xavier_uniform_(model.weight)
[w,b]=model.parameters()
print(w,b)
criterion= nn.MSELoss()
optimizer= torch.optim.SGD(model.parameters(),lr=0.0001)

# step4: traing model
torch.manual_seed(1)
epochs=10000
losses=[]

for e in range(epochs):
preY=model.forward(X)
loss=criterion(preY,Y)
losses.append(loss)