设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

使用深度学习检测疟疾(6)

发布时间:2019-05-24 20:19 所属栏目:21 来源:Dipanjan (dj) Sarkar
导读:基于这些代码的架构,我们的 CNN 模型有三个卷积和一个池化层,其后是两个致密层,以及用于正则化的失活。让我们训练我们的模型。 import datetime logdir = os.path.join('/home/dipanzan_sarkar/projects/tensorb

基于这些代码的架构,我们的 CNN 模型有三个卷积和一个池化层,其后是两个致密层,以及用于正则化的失活。让我们训练我们的模型。

  1. import datetime
  2.  
  3. logdir = os.path.join('/home/dipanzan_sarkar/projects/tensorboard_logs',
  4. datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
  5. tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
  6. reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.5,
  7. patience=2, min_lr=0.000001)
  8. callbacks = [reduce_lr, tensorboard_callback]
  9.  
  10. history = model.fit(x=train_imgs_scaled, y=train_labels_enc,
  11. batch_size=BATCH_SIZE,
  12. epochs=EPOCHS,
  13. validation_data=(val_imgs_scaled, val_labels_enc),
  14. callbacks=callbacks,
  15. verbose=1)
  16.  
  17. # Output
  18. Train on 17361 samples, validate on 1929 samples
  19. Epoch 1/25
  20. 17361/17361 [====] - 32s 2ms/sample - loss: 0.4373 - accuracy: 0.7814 - val_loss: 0.1834 - val_accuracy: 0.9393
  21. Epoch 2/25
  22. 17361/17361 [====] - 30s 2ms/sample - loss: 0.1725 - accuracy: 0.9434 - val_loss: 0.1567 - val_accuracy: 0.9513
  23. ...
  24. ...
  25. Epoch 24/25
  26. 17361/17361 [====] - 30s 2ms/sample - loss: 0.0036 - accuracy: 0.9993 - val_loss: 0.3693 - val_accuracy: 0.9565
  27. Epoch 25/25
  28. 17361/17361 [====] - 30s 2ms/sample - loss: 0.0034 - accuracy: 0.9994 - val_loss: 0.3699 - val_accuracy: 0.9559

我们获得了 95.6% 的验证精确率,这很好,尽管我们的模型看起来有些过拟合(通过查看我们的训练精确度,是 99.9%)。通过绘制训练和验证的精度和损失曲线,我们可以清楚地看到这一点。

  1. f, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
  2. t = f.suptitle('Basic CNN Performance', fontsize=12)
  3. f.subplots_adjust(top=0.85, wspace=0.3)
  4.  
  5. max_epoch = len(history.history['accuracy'])+1
  6. epoch_list = list(range(1,max_epoch))
  7. ax1.plot(epoch_list, history.history['accuracy'], label='Train Accuracy')
  8. ax1.plot(epoch_list, history.history['val_accuracy'], label='Validation Accuracy')
  9. ax1.set_xticks(np.arange(1, max_epoch, 5))
  10. ax1.set_ylabel('Accuracy Value')
  11. ax1.set_xlabel('Epoch')
  12. ax1.set_title('Accuracy')
  13. l1 = ax1.legend(loc="best")
  14.  
  15. ax2.plot(epoch_list, history.history['loss'], label='Train Loss')
  16. ax2.plot(epoch_list, history.history['val_loss'], label='Validation Loss')
  17. ax2.set_xticks(np.arange(1, max_epoch, 5))
  18. ax2.set_ylabel('Loss Value')
  19. ax2.set_xlabel('Epoch')
  20. ax2.set_title('Loss')
  21. l2 = ax2.legend(loc="best")

使用深度学习检测疟疾

基础 CNN 学习曲线

我们可以看在在第五个纪元,情况并没有改善很多。让我们保存这个模型用于将来的评估。

  1. model.save('basic_cnn.h5')

深度迁移学习

就像人类有与生俱来在不同任务间传输知识的能力一样,迁移学习允许我们利用从以前任务学到的知识用到新的相关的任务,即使在机器学习或深度学习的情况下也是如此。如果想深入探究迁移学习,你应该看我的文章“一个易于理解与现实应用一起学习深度学习中的迁移学习的指导实践”和我的书《Python 迁移学习实践》。

使用深度学习检测疟疾

深度迁移学习的想法

在这篇实践中我们想要探索的想法是:

在我们的问题背景下,我们能够利用一个预训练深度学习模型(在大数据集上训练的,像 ImageNet)通过应用和迁移知识来解决疟疾检测的问题吗?

我们将应用两个最流行的深度迁移学习策略。

  • 预训练模型作为特征提取器
  • 微调的预训练模型

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读