我尝试实现一个简单的架构
def conv_block_A(layer): block = tf.keras.layers.Conv2D(filters=128, kernel_size=3, strides=1, padding='same')(layer) block = tf.keras.layers.Conv2D(filters=196, kernel_size=3, strides=1, padding='same')(block) block = tf.keras.layers.Conv2D(filters=128, kernel_size=3, strides=1, padding='same')(block) block = tf.keras.layers.BatchNormalization(momentum=0.8)(block) block = tf.keras.layers.LeakyReLU(alpha=0.2)(block) return blockdef PoolingAndDense(input): dense = tf.keras.layers.GlobalAveragePooling2D(data_format='channels_last')(input) dense = tf.keras.layers.Dense(units=64)(dense) dense = tf.keras.layers.LeakyReLU(alpha=0.2)(dense) dense = tf.keras.layers.Dense(units=32)(dense) dense = tf.keras.layers.LeakyReLU(alpha=0.2)(dense) dense = tf.keras.layers.Dense(units=1)(dense) dense = tf.keras.activations.sigmoid(dense) return denseinput_shape = input_shapeinput_layer = tf.keras.layers.Input(shape=input_shape,dtype="float32")stem = tf.keras.layers.Conv2D(filters=64, kernel_size=5, strides=1, padding='same')(input_layer)first_conv_block_output = conv_block_A(stem)mtss = PoolingAndDense(first_conv_block_output)Model = tf.keras.Model(inputs=input_layer, outputs=mtss)
但是 model.save 在 TensorFlow 1.14 中无法工作,但在 1.15 中可以工作。我该如何使其在 1.14 版本中工作?
回答:
在详细查阅了 TensorFlow 文档 并逐行检查我的代码后,我将
dense = tf.keras.activations.sigmoid(dense)
更改为
tf.keras.layers.Dense(units=1, activation='sigmoid')(dense)