第一次作业:深度学习基础

【第一部分】视频学习心得及问题总结


第一次作业:深度学习基础_第1张图片


第一次作业:深度学习基础_第2张图片

【第二部分】代码练习

2.1 图像处理基本练习

理解图像类型,进行一些基本的图像分割操作

  • 首先下载并显示图像
    python图像处理类库主要有Opencv、PIL、skimage。PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理。
!wget https://raw.githubusercontent.com/summitgao/ImageGallery/master/yeast_colony_arra
import numpy as np
import matplotlib.pyplot as plt

import skimage
from skimage import data
from skimage import io

#io.imread读出图片格式是uint8(unsigned int)
#value是numpy array
#对于RGB图片图像数据是以RGB的格式进行存储的
colony = io.imread('yeast_colony_array.jpg')
print(type(colony))
print(colony.shape)
  • 绘制所有图像通道
plt.imshow(colony[:,:,:])
plt.title('3-channel image')
plt.axis('off')

# Plot one channel only
plt.subplot(122)
plt.imshow(colony[:,:,0])
plt.title('1-channel image')
plt.axis('off');

第一次作业:深度学习基础_第3张图片

  • 对特定的像素点进行操作
camera = data.camera()
print(camera[10, 20])

# Set a region to black
# 将区域设置为黑色
camera[30:100, 10:100] = 0
#黑白gray
plt.imshow(camera, 'gray')

第一次作业:深度学习基础_第4张图片

camera = data.camera()
mask = camera < 80
camera[mask] = 255
plt.imshow(camera, 'gray')

第一次作业:深度学习基础_第5张图片

  • 暂时有点晕
# 将较亮像素设置为红色
red_cat = cat.copy()
reddish = cat[:, :, 0] > 160
red_cat[reddish] = [255, 0, 0] 
plt.imshow(red_cat)

第一次作业:深度学习基础_第6张图片

# 将RGB颜色更改为BGR
BGR_cat = cat[:, :, ::-1]
plt.imshow(BGR_cat)

第一次作业:深度学习基础_第7张图片

  • 绘制直方图,主要用hist函数
img = data.camera()
# ravel()
plt.hist(img.ravel(), bins=256, histtype='step', color='black');

第一次作业:深度学习基础_第8张图片

  • 再看看
# 使用阈值
# ??
plt.imshow(img>0.5)

  • Canny 算子用于边缘检测
from skimage.feature import canny
from scipy import ndimage as ndi
img_edges = canny(img)
img_filled = ndi.binary_fill_holes(img_edges)

# Plot
plt.figure(figsize=(18, 12))
plt.subplot(121)
plt.imshow(img_edges, 'gray')
plt.subplot(122)
plt.imshow(img_filled, 'gray')

第一次作业:深度学习基础_第9张图片

  • 改变图像对比度
# Load an example image
img = data.camera()
plt.imshow(img, 'gray')

#增加一句代码
from skimage import exposure
# 对比拉伸
p2, p98 = np.percentile(img, (2, 98))
img_rescale = exposure.rescale_intensity(img, in_range=(p2, p98))
plt.imshow(img_rescale, 'gray')

# 均衡
img_eq = exposure.equalize_hist(img)
plt.imshow(img_eq, 'gray')

# 自适应均衡
img_adapteq = exposure.equalize_adapthist(img, clip_limit=0.03)
plt.imshow(img_adapteq, 'gray')

第一次作业:深度学习基础_第10张图片

2.2 pytorch基础练习

看完视频跑了一下,没什么问题
有个小块报错,参考米高桑同学的解决方案改了(给大佬递茶
https://www.cnblogs.com/michaelsong/p/13362757.html

2.3 螺旋数据分类

  • 下载必要的绘画函数
  • 设置在GPU上运行
# 因为colab是支持GPU的,torch 将在 GPU 上运行
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print('device: ', device)
  • 参数
# 初始化随机数种子。神经网络的参数都是随机初始化的,
# 不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,
# 因此,在pytorch中,通过设置随机数种子也可以达到这个目的
seed = 12345
random.seed(seed)
torch.manual_seed(seed)

N = 1000  # 每类样本的数量
D = 2  # 每个样本的特征维度
C = 3  # 样本的类别
H = 100  # 神经网络里隐层单元的数量
  • 样本
    第一次作业:深度学习基础_第11张图片

  • 线性模型
    准确率很低
    第一次作业:深度学习基础_第12张图片

  • 构建两层神经网络分类
    加入ReLU 激活函数以后,矩阵的线性变换+激活函数的非线性变换,用来解决分类/回归问题。
    第一次作业:深度学习基础_第13张图片

2.4 回归分析

与上一个实验类似。

  • 样本
    第一次作业:深度学习基础_第14张图片

  • 建立线性模型【没有激活函数
    第一次作业:深度学习基础_第15张图片

  • 使用两种不同的激活函数ReLU和Tanh
    第一次作业:深度学习基础_第16张图片

  • Tanh收敛速度比ReLU慢,可能是因为梯度消失问题

  • 两种不同激活函数的不同结果,前者是分段线性函数,后者是连续光滑的回归函数,也可能是因为两种激活函数梯度的变化。

你可能感兴趣的:(第一次作业:深度学习基础)