Resnet50源码-tensorflow+keras详细解析

Resnet50源码-tensorflow解析


原理解析:何凯明论文PPT-秒懂原理

项目地址:Resnet50源码

参考keras中的源码进行解析

先加载一些库的文件

from __future__ import print_function

import numpy as np
import warnings

from keras.layers import Input
from keras import layers
from keras.layers import Dense
from keras.layers import Activation
from keras.layers import Flatten
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import GlobalMaxPooling2D
from keras.layers import ZeroPadding2D
from keras.layers import AveragePooling2D
from keras.layers import GlobalAveragePooling2D
from keras.layers import BatchNormalization
from keras.models import Model
from keras.preprocessing import image
import keras.backend as K
from keras.utils import layer_utils
from keras.utils.data_utils import get_file
from keras.applications.imagenet_utils import decode_predictions
from keras.applications.imagenet_utils import preprocess_input
from keras.applications.imagenet_utils import _obtain_input_shape
from keras.engine.topology import get_source_inputs

然后添加预训练的权重(采用网上的resnet50进行举例)

WEIGHTS_PATH = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels.h5'
WEIGHTS_PATH_NO_TOP = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5'

简单了解下残差网络的原理图

然后我们可以开始定义结构的主体,首先定义identity(x)

def identity_block(input_tensor, kernel_size, filters, stage, block):
    """The identity block is the block that has no conv layer at shortcut.
    # Arguments
        input_tensor: input tensor  #输入变量#
        kernel_size: defualt 3, the kernel size of middle conv layer at main path #卷积核的大小#
        filters: list of integers, the filterss of 3 conv layer at main path  #卷积核的数目#
        stage: integer, current stage label, used for generating layer 
  • 12
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
TensorFlow 2是一个强大的开源机器学习框架,而Keras是其高级API之一。ResNet-50是基于深度残差网络(ResNet)架构的一个流行的卷积神经网络模型。 TensorFlow 2在使用Keras构建模型时,可以方便地使用ResNet-50。首先,我们需要导入相应的库和模块: ```python import tensorflow as tf from tensorflow.keras.applications.resnet50 import ResNet50 from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np ``` 然后我们可以加载ResNet-50模型,这个模型已经在大规模图像分类任务中经过训练: ```python model = ResNet50(weights='imagenet') ``` 接下来,我们可以使用该模型对任意图像进行分类。首先,我们需要对图像进行预处理: ```python img_path = 'path_to_your_image.jpg' img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) ``` 然后,我们将图像输入模型,并获取预测结果: ```python preds = model.predict(x) ``` 最后,我们可以将预测结果转换为可读性更高的标签: ```python decoded_preds = decode_predictions(preds, top=3)[0] for label, description, probability in decoded_preds: print(f'{label}: {description} ({probability * 100}%)') ``` 这样,我们就可以使用TensorFlow 2和Keras中的ResNet-50模型对任意图像进行分类了。这个模型已经在庞大的图像数据集上进行了预训练,具有强大的图像特征提取能力,可以应用于各种图像相关的机器学习任务。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值