import datetime from keras.utils import to_categorical from keras.datasets import fashion_mnist import numpy as np from keras.layers import Input, Conv2D, AveragePooling2D, BatchNormalization, Activation, Add, Flatten, Dense, Dropout from keras.models import Model

def conv(channels, strides=1, kernel_size=(3, 3), padding='same'): return Conv2D(filters=channels, kernel_size=kernel_size, strides=strides, padding=padding,use_bias=False)

def res_block(inputs, base_channels):
residual = inputs residual = BatchNormalization()(residual) residual = Activation('relu')(residual) residual = conv(channels=base_channels, kernel_size=(1, 1))(residual) #直连部分 x = conv(channels=base_channels, kernel_size=(1, 1))(inputs) x= BatchNormalization()(x) x = Activation('relu')(x) x= conv(channels=base_channels2, strides=1, kernel_size=(3,3))(x) x= BatchNormalization()(x) x = Activation('relu')(x) x=conv(channels=base_channels4, kernel_size=(1,1))(x) outputs = Add()([x, residual]) return Activation('relu')(outputs)

def ResNet(input_shape, base_channels, classes): inputs = Input(shape=input_shape) x= conv(channels=base_channels,strides=2,kernel_size=(3,3))(inputs) x = res_block(x, base_channels=base_channels) x= res_block(x, base_channels=base_channels2) x= res_block(x, base_channels=base_channels4) x= AveragePooling2D(pool_size=(4,4))(x) x= Flatten()(x) x= Dense(units=classes, activation='softmax')(x) model= Model(inputs=inputs, outputs=x) return model

Example usage:

model = ResNet(input_shape=(28,28,1), base_channels=64, classes=10) model.summary()

ResNet 模型构建:使用 Keras 实现残差网络

原文地址: https://www.cveoy.top/t/topic/ogF3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录