一、Deeplearning-assignment
在本次作业中,我们将学习如何通过残差网络(ResNets)建立更深的卷及网络。理论上,深层次的网络可以表示非常复杂的函数,但在实践中,他们是很难创建和训练的。残差网络使得建立比以前更深层次的网络成为可能。对于残差网络的详细讲解,具体可参考该论文:Deep Residual Learning for Image Recognition
在这个任务中,您将:
- 实现ResNets的基本构建块。
- 整理这些构建块来实现和训练图像分类的最先进的神经网络。
随着神经网络层数的递增,它越来越能实现一些很复杂的函数功能,它可以在很多不同的抽象层学习特征(从低层到高层),但也随之带来一些问题。在某些时候,深层神经网络并不会出现好的效果,比如一个巨大的障碍就是会出现梯度消失的问题。
很深的网络常常会有一个梯度迅速趋于零的时候,从而使梯度下降的过程变得相当缓慢。更具体地说,在梯度下降过程中,从最后一层backprop回到第一层,每一步乘以权重矩阵,从而能够迅速减少指数梯度为零(或者,在某些情况下,成倍增长迅速)。
现在你需要通过建立一个残差网络来解决问题。
二、相关算法代码
import numpy as np
from keras import layers
from keras.layers import Input, Add, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D, \
AveragePooling2D, MaxPooling2D, GlobalMaxPooling2D
from keras.models import Model, load_model
from keras.preprocessing import image
from keras.utils import layer_utils
from keras.utils.data_utils import get_file
from keras.applications.imagenet_utils import preprocess_input
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
from keras.utils import plot_model
from resnets_utils import *
from keras.initializers import glorot_uniform
import scipy.misc
from matplotlib.pyplot import imshow
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import