Day26 参加职训(机器学习与资料分析工程师培训班),Tensorflow.keras & Pytorch

上午: Python机器学习套件与资料分析
挑几个不错的片段分享

# 储存每个epoch的weights

from tensorflow.keras.callbacks import ModelCheckpoint

MNIST_Model.set_weights(MNIST_weights)
MNIST_Model.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', 
                    metrics = ['acc'])

MCP_path = './temp/'+'weights_{epoch:03d}.h5'

MNIST_MCP = ModelCheckpoint(filepath = MCP_path)

MNIST_Model.fit(X_train, y_train, epochs = 5, batch_size = 128, verbose = 0, 
                callbacks = [MNIST_MCP])
from tensorflow.keras.callbacks import TensorBoard

MTB = TensorBoard(log_dir='./logs0804', histogram_freq=1, write_graph=True)
MNIST_Model.fit(X_train, y_train, epochs = 16, batch_size = 128, verbose = 0, 
                callbacks = [MTB], validation_data = (X_test, y_test) )

# 显示tensorboard

%load_ext tensorboard
%tensorboard --logdir='./log0804'

下午: Pytorch 与深度学习初探

练习使用pytorch

######################### step1: load data (generate) ############
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets

def scatter_plot():
  plt.scatter(X[Y==0,0], X[Y==0,1]) # scatter(X1,X2) where y==0
  plt.scatter(X[Y==1,0], X[Y==1,1]) #==> scatter(X[Y==0,0],X[Y==0,1])

def plot_fit(option=1):
  if option==0: 
    [w1,w2,b]=[-7,5,0]
  else:
    [w,b]=model.parameters() #[w,b]=[[w1,w2],b]
    w1,w2=w.view(2)
    w1=w1.item()
    w2=w2.item() 
    b=b[0].detach().item()

  x1=np.array([-1.5,1.5])
  x2=(w1*x1+b)/(-1*w2)
  scatter_plot()
  plt.plot(x1,x2,'r')
  plt.show()

# def plot_fit(option=0):
#   plt.scatter(X,Y)
#   mx=np.array([torch.min(X),torch.max(X)])
#   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()

# generate data 
n_samples=100
centers=[[-0.5,-0.5],[0.5,0.5]]
X,Y=datasets.make_blobs(n_samples=n_samples,random_state=1,centers=centers,cluster_std=0.2)
print("X=",X.shape,"Y=",Y.shape)

########################### step2: preprocessing X,Y ############
tensorX=torch.Tensor(X)
tensorY=torch.Tensor(Y.reshape(len(X),1))
print(tensorX.shape,tensorY.shape)
print(type(X))
plot_fit(0)

########################### step3: build model ############
# class myModel(nn.Module):
#   def __init__(self):
#     super().__init__()
#     self.linear=nn.Linear(2,1)
#   def forward(self,x):
#     pred=torch.sigmoid(self.linear(x))
#     return pred
#   def predict(self,x):
#     pred=self.forward(x)
#     if pred >=0.5:
#       return 1
#     else: 
#       return 0

model=myModel()

# torch.nn.init.xavier_uniform_(model.weight) # advance 1: init weights
[w,b]=model.parameters()
print(w,b)
plot_fit()

criterion= nn.BCELoss()
optimizer=torch.optim.SGD(model.parameters(),lr=0.0001)#advance 2:lr=0.0001
############################ step4: traing model############
torch.manual_seed(1)
epochs=1000
losses=[]

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

  optimizer.zero_grad()
  loss.backward()
  optimizer.step()

plt.plot(range(epochs),losses)
plt.show()

plot_fit(1)
plt.show()
# step5: evaluate model (draw)

<<:  MacOS 透过 NVM 管理 Node.js 的版本管理器(Node Version Manager)

>>:  学习Ruby、Rails事前准备工作

企划实现(6)

甚麽是第三方支付? 第三方支付是指电子商务企业或是具实力及信用保障的独立机构,与银行之间建立一个中立...

Leetcode 挑战 Day 07 [118. Pascal's Triangle]

118. Pascal's Triangle 今天要挑战的是实作一个在数学上有许多应用的帕斯卡三角形...

#20-有看到我的猫吗?用offsetPath让猫猫滚起来!(SVG)

偶尔会看到,往下滚,球就会跟着滚动的幅度以抛物线移动。 今天就来使用SVG的Path做做看! 其实是...

android studio 30天学习笔记 -day 2 -icon

在这次的专案开发有用到vector asset,里面有一些可以应用在专案开发的向量图形,如以下图形:...

30 | WordPress 区块编辑器 | 延伸相关参考资料列表:

为了让这个教学系列可以适合持续变化的社会变化,会这最後这篇预留更新扩展的资源列表,会不停时更新在这个...