【TF2.0-CNN】迁移学习(将inceptionV3应用到猫狗分类)

 

【准备】

 

【例1】

from tensorflow.keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf

local_weights_file = '/tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5'

pre_trained_model = tf.keras.applications.inception_v3.InceptionV3(input_shape=(150, 150, 3),
                                include_top=False,
                                weights=None)

pre_trained_model.load_weights(local_weights_file)
for layer in pre_trained_model.layers:
    layer.trainable = False

last_layer = pre_trained_model.get_layer('mixed7')
print('last layer output shape: ', last_layer.output_shape)
last_output = last_layer.output
x = tf.keras.layers.Flatten()(last_output)
x = tf.keraslayers.Dense(1024, activation='relu')(x)
x = tf.keraslayers.Dropout(0.2)(x)
x = tf.keraslayers.Dense  (1, activation='sigmoid')(x)

model = tf.keras.Model( pre_trained_model.input, x)

model.compile(optimizer = tf.keras.optimizers.RMSprop(lr=0.0001),
              loss = 'binary_crossentropy',
              metrics = ['acc'])

train_datagen = ImageDataGenerator(rescale = 1./255.,
                                   rotation_range = 40,
                                   width_shift_range = 0.2,
                                   height_shift_range = 0.2,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

train_generator = train_datagen.flow_from_directory("/tmp/cats_and_dogs_filtered/train",
                                                    batch_size = 20,
                                                    class_mode = 'binary',
                                                    target_size = (150, 150))

test_datagen = ImageDataGenerator( rescale = 1.0/255. )
validation_generator =  test_datagen.flow_from_directory( "/tmp/cats_and_dogs_filtered/validation",
                                                          batch_size  = 20,
                                                          class_mode  = 'binary',
                                                          target_size = (150, 150))


history = model.fit_generator(
            train_generator,
            validation_data = validation_generator,
            steps_per_epoch = 100,
            epochs = 20,
            validation_steps = 50,
            verbose = 2)

【重点1】导入inceptionV3模型和权重

local_weights_file = '/tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5'
pre_trained_model = tf.keras.applications.inception_v3.InceptionV3(input_shape=(150, 150, 3),
                                include_top=False,
                                weights=None)

pre_trained_model.load_weights(local_weights_file)
for layer in pre_trained_model.layers:
    layer.trainable = False

导入权重后,通过for循环,用layer.trainable=False把模型中的所有层都冻结(设置为不可训练)。

【重点2】在模型的后面加上猫狗分类的训练层

last_layer = pre_trained_model.get_layer('mixed7')
print('last layer output shape: ', last_layer.output_shape)
last_output = last_layer.output
x = tf.keras.layers.Flatten()(last_output)
x = tf.keraslayers.Dense(1024, activation='relu')(x)
x = tf.keraslayers.Dropout(0.2)(x)
x = tf.keraslayers.Dense  (1, activation='sigmoid')(x)
model = tf.keras.Model( pre_trained_model.input, x)

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TF 2.0深度学习实战4主要介绍了在TensorFlow 2.0版本中如何实现深度学习的相关内容。首先,TensorFlow 2.0版本相比之前的版本有很大的改进和优化,使得我们在构建、训练和部署深度学习模型时更加方便和高效。 在这本书中,我们可以学习到如何使用TF 2.0来构建卷积神经网络(CNN)、循环神经网络(RNN)和转移学习模型等。通过书中的实例代码,我们可以学习到如何使用TF 2.0来训练这些模型,并使用它们来解决实际的问题,比如图像分类、文本生成和语音识别等。 与此同时,本书还介绍了如何使用TF 2.0的低级API和高级API来构建深度学习模型。低级API提供了更加灵活和底层的操作,可以满足一些特定需求;而高级API则提供了更加简单和易于使用的接口,可以加速开发过程。通过书中的实例代码,读者可以学习到如何使用这些API来构建不同类型的深度学习模型。 此外,书中还介绍了TF 2.0版本的Eager Execution(即动态图计算),这是TF 2.0的一个重要特性,使得我们可以实时调试和追踪代码中的计算过程。通过学习如何使用Eager Execution,读者可以更好地理解和调试深度学习模型,并且能够更快地迭代和调整模型的结构和参数。 总之,TF 2.0深度学习实战4是一本介绍如何使用TensorFlow 2.0版本来实践深度学习的实用书籍。通过学习本书,读者可以了解到TF 2.0的优势和特性,并能够熟练地使用TF 2.0构建、训练和部署深度学习模型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值