import tensorflow as tf

定义ResNetBlock

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class ResNetBlock(tf.keras.layers.Layer):
def __init__(self,units):
super(ResNetBlock,self).__init__()
self.conv1 = tf.keras.layers.Conv2D(units,
kernel_size=3,
padding='same',
use_bias=False)
self.bn1 = tf.keras.layers.BatchNormalization()#批标准化

self.conv2 = tf.keras.layers.Conv2D(units,
kernel_size=3,
padding='same',
use_bias=False)
self.bn2 = tf.keras.layers.BatchNormalization()#批标准化

def call(self,x):
shortcut = x
out = self.conv1(x)
out = tf.nn.relu(self.bn1(out))
out = self.conv2(out)
out = tf.nn.relu(self.bn2(out))
out += shortcut
return tf.nn.relu(out)

创建ResNetBlock对象

1
resnet_block = ResNetBlock(64)

加载预训练模型ResNet50

1
2
3
resnet50 = tf.keras.applications.ResNet50(include_top=False,
weights='imagenet',
input_shape=(256,256,3))

==结构绘图==

1
tf.keras.utils.plot_model(resnet50)

·在anaconda

– conda install graphviz

– conda install pydotplus

·pip

– pip install graphviz

– pip install pydotplus

– pip install pydot