有一说一,VGG19跟ResNet34比起来真的很浅(上图)。
ResNet全名为Deep Residual Neural Network,
光看翻译可能不太能理解甚麽是「残差网路」,
所以今天师爷我就来翻译翻译,什麽叫「残差网路」。
以下表格中,最中间的就是resnet50的结构,
可以分成几个部分:
ResNet-152在ImageNet上达到了5.71% top-5 error,
狠狠甩开VGG-16和GoogLeNet,
上表看起来也是152 > 101 > 50。
那为何不要直叠一个1000层的神经网路呢?
上图为ResNet作者在CIFAR-10上的实验结果,
ResNet-1202的表现甚至比ResNet-56还差。
没错,就是这麽简单
其实就是import不同的模组XD
from tensorflow.keras.applications import ResNet50
def build_model(preModel=ResNet50, num_classes=7):
pred_model = preModel(include_top=False, weights='imagenet',
input_shape=(48, 48, 3),
pooling='max', classifier_activation='softmax')
output_layer = Dense(
num_classes, activation="softmax", name="output_layer")
model = tf.keras.Model(
pred_model.inputs, output_layer(pred_model.output))
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.CategoricalCrossentropy(), metrics=['accuracy'])
return model
ResNet带给我的启示是这样的:
人们知道模型加深可以提高准确率,
但是加深会有许多困难要克服,
例如:1.参数量变大、2.推论时间变久、3.梯度消失严重、4.硬体设备不足。
这些困难导致模型无法训练成功。
而残差网路+bottleneck看似解决了1.和3.,
但也只是减缓模型加深的带来的困难,而非完全解决。
但是ResNetv2对ResNetv1做了改善,
让模型叠到1001层(ResNet-1001[ours])也能够成功训练。
如下图所示:
<<: ISBN Barcode Scanner实作 Day 20
Guard 可以帮助你在开发时监听,并启用测试,让你在开发阶段可以顺便跑测试,当然我也是第一次玩XD...
智慧合约是一种可以让你避免有中间人介入的合约。如果你想要签约买车、买房子,都需要透过仲介、业务销售...
//前後移动,左右转向 private int Speed_run = 5; private int...
专案运行过程,如何将进行方向维持着,不会像YAMAHA一样乱点技能树呢? 这就需要「时时勤拂拭,莫使...
还记得我们在 Day 15 曾经介绍过 Guard 吗? 今天要来跟大家分享如何在 XState 中...