论文是讲乳腺癌分类的,简单做个复现,模型如图1,详细介绍如图2,其余细节:batchsize给的是64.(剩下关于激活函数比较,dropout与BN层影响在此不做讨论,通过代码变形实施起来也简单)


详细代码复现:
1.导包

import torch
from torch import nn
from torchinfo import summary

2.对论文中所论述的3个卷积+一个BN层+一个maxpooling层的 结构进行定义

class TCIS(nn.Module):def __init__(self,channel,padding=True,First=False):super().__init__()self.channel = channelself.padding = paddingself.First = Firstself.inchannel = int(self.channel/2)#第一层第一个卷积接收到的channel是3,单独定义self.conv_first = nn.Conv2d(in_channels=3, out_channels=self.channel,kernel_size=3,stride=1, padding = 1)#除第一层,其余层的第一个卷积channel是当前channel的一半self.conv1_1 = nn.Conv2d(in_channels=self.inchannel, out_channels=self.channel,kernel_size=3, stride=1, padding=1)#除第五层外,第二个卷积和第三个卷积定义self.conv1_2 = nn.Conv2d(in_channels=self.channel, out_channels=self.channel,kernel_size=3,stride=1, padding = 1)#第五层中,第二个卷积和第三个卷积定义self.conv2_2 = nn.Conv2d(in_channels=self.channel, out_channels=self.channel,kernel_size=3, stride=1)#bn层定义self.bn = nn.BatchNorm2d(self.channel)#最大池化层定义self.mp = nn.MaxPool2d(kernel_size=2)def forward(self,x):if self.First == False:x1 = self.conv1_1(x)else:x1 = self.conv_first(x)if self.padding==True:x2 = self.conv1_2(x1)x3 = self.conv1_2(x2)else:x2 = self.conv2_2(x1)x3 = self.conv2_2(x2)xbn = self.bn(x3)xout = self.mp(xbn)return xout

3.对主程序进行定义

class NACHICNN(nn.Module):def __init__(self):super().__init__()#第一层self.convb1 = TCIS(32,padding=True, First=True)#第二层self.convb2 = TCIS(64)#第三层self.convb3 = TCIS(128)#第4层self.convb4 = TCIS(256)#第5层self.convb5 = TCIS(512,padding=False)self.fc1 = nn.Linear(32768,512)#输入神经元数是通过debug找到的self.fc2 = nn.Linear(512,512)self.sigmoid_ = nn.Sigmoid()def forward(self,x):x1 = self.convb1(x)x2 = self.convb2(x1)x3 = self.convb3(x2)x4 = self.convb4(x3)x5 = self.convb5(x4)x6 = x5.flatten()#(这里我按照原文直接使用flatten(),深度学习中,多数情况下使用全局平均池化+view(),的组合对其进行定义)x6 = self.fc1(x6)x7 = self.fc2(x6)return torch.sigmoid(x7)

4.模型测试代码

if __name__ == "__main__":#实例化net = NACHICNN().to(device='cuda')#打印模型show_ = summary(net, input_size=(64,3,96,96))

5.模型参数
Layer (type:depth-idx) Output Shape Param #

NACHICNN [512] –
├─TCIS: 1-1 [64, 32, 48, 48] 13,888
│ └─Conv2d: 2-1 [64, 32, 96, 96] 896
│ └─Conv2d: 2-2 [64, 32, 96, 96] 9,248
│ └─Conv2d: 2-3 [64, 32, 96, 96] (recursive)
│ └─BatchNorm2d: 2-4 [64, 32, 96, 96] 64
│ └─MaxPool2d: 2-5 [64, 32, 48, 48] –
├─TCIS: 1-2 [64, 64, 24, 24] 38,720
│ └─Conv2d: 2-6 [64, 64, 48, 48] 18,496
│ └─Conv2d: 2-7 [64, 64, 48, 48] 36,928
│ └─Conv2d: 2-8 [64, 64, 48, 48] (recursive)
│ └─BatchNorm2d: 2-9 [64, 64, 48, 48] 128
│ └─MaxPool2d: 2-10 [64, 64, 24, 24] –
├─TCIS: 1-3 [64, 128, 12, 12] 151,168
│ └─Conv2d: 2-11 [64, 128, 24, 24] 73,856
│ └─Conv2d: 2-12 [64, 128, 24, 24] 147,584
│ └─Conv2d: 2-13 [64, 128, 24, 24] (recursive)
│ └─BatchNorm2d: 2-14 [64, 128, 24, 24] 256
│ └─MaxPool2d: 2-15 [64, 128, 12, 12] –
├─TCIS: 1-4 [64, 256, 6, 6] 597,248
│ └─Conv2d: 2-16 [64, 256, 12, 12] 295,168
│ └─Conv2d: 2-17 [64, 256, 12, 12] 590,080
│ └─Conv2d: 2-18 [64, 256, 12, 12] (recursive)
│ └─BatchNorm2d: 2-19 [64, 256, 12, 12] 512
│ └─MaxPool2d: 2-20 [64, 256, 6, 6] –
├─TCIS: 1-5 [64, 512, 1, 1] 2,374,144
│ └─Conv2d: 2-21 [64, 512, 6, 6] 1,180,160
│ └─Conv2d: 2-22 [64, 512, 4, 4] 2,359,808
│ └─Conv2d: 2-23 [64, 512, 2, 2] (recursive)
│ └─BatchNorm2d: 2-24 [64, 512, 2, 2] 1,024
│ └─MaxPool2d: 2-25 [64, 512, 1, 1] –
├─Linear: 1-6 [512] 16,777,728
├─Linear: 1-7 [512] 262,656

Total params: 24,929,760
Trainable params: 24,929,760
Non-trainable params: 0
Total mult-adds (G): 66.72

Input size (MB): 7.08
Forward/backward pass size (MB): 864.03
Params size (MB): 87.02
Estimated Total Size (MB): 958.13

import sys; print(‘Python %s on %s’ % (sys.version, sys.platform))
Python 3.9.13 (main, Aug 25 2022, 23:51:50) [MSC v.1916 64 bit (AMD64)]
Type ‘copyright’, ‘credits’ or ‘license’ for more information
IPython 7.31.1 – An enhanced Interactive Python. Type ‘?’ for help.
PyDev console: using IPython 7.31.1
Python 3.9.13 (main, Aug 25 2022, 23:51:50) [MSC v.1916 64 bit (AMD64)] on win32

待施工。。。
1.数据读取
3.训练代码
4.测试代码
5.主程序

乳腺癌病理图像分类之A Novel Architecture to Classify Histopathology Images Using CNN之二--模型代码复现相关推荐

  1. 基于小样本知识蒸馏的乳腺癌组织病理图像分类

    基于小样本知识蒸馏的乳腺癌组织病理图像分类 期刊:中国计量大学学报 时间:2022 研究院:中国计量大学 关键词:乳腺癌 :知识蒸馏 :图像分类 :小样本学习 :卷积神经网络 方法简介 本文使用的知识 ...

  2. 乳腺癌组织病理图像分类

    原文地址:https://ieeexplore.ieee.org/abstract/document/8122889/citations#citations 1.数据集介绍 Breakhis数据库包含 ...

  3. 乳腺癌病理图像处理综述

    参考文献:Review of Breast Cancer Pathologigcal Image Processing - PubMed 引用: Ya-nan Zhang, Ke-rui XIA, C ...

  4. 深度学习论文精读05——用于乳腺癌组织病理学图像分类的深度特征

    用于乳腺癌组织病理学图像分类的深度特征 标题:Deep Features for Breast Cancer Histopathological Image Classifification 链接:查 ...

  5. 对于图像分类任务,相对于全连接的DNN,CNN模型的主要优点有哪些?

    对于图像分类任务,相对于全连接的DNN,CNN模型的主要优点有哪些? CNN相对于全连接的DNN(deep neural network)的优势包括一下几个方面: 第一,由于CNN的权重是高度复用的, ...

  6. 【CV】医学图像|乳腺癌组织病理图像分类研究

    1.数据集 数据集是国外的研究人员整理收集的,下载链接为: https://web.inf.ufpr.br/vri/databases/breast-cancer-histopathological- ...

  7. 【毕业设计】深度学习乳腺癌医学图像分类算法研究与实现 - python 卷积神经网络

    文章目录 1 前言 2 前言 3 数据集 3.1 良性样本 3.2 病变样本 4 开发环境 5 代码实现 5.1 实现流程 5.2 部分代码实现 5.2.1 导入库 5.2.2 图像加载 5.2.3 ...

  8. cnn图像二分类 python_TensorFlow2基础:CNN图像分类

    1. 导包 import matplotlib.pyplot as plt import numpy as np import pandas as pd import tensorflow as tf ...

  9. 对比图像分类五大方法:KNN、SVM、BPNN、CNN和迁移学习

     选自Medium 机器之心编译 参与:蒋思源.黄小天.吴攀 图像分类是人工智能领域的基本研究主题之一,研究者也已经开发了大量用于图像分类的算法.近日,Shiyu Mou 在 Medium 上发表 ...

最新文章

  1. 学习JS的正则表达式
  2. ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务
  3. 再见了,余!额!宝!!!
  4. 小程序短视频项目———上传短视频业务流程简介
  5. Coolite Toolkit学习笔记三:基本控件之Button、TextField、DataField、ComboBox
  6. linux如何创建共享内存,linux实现共享内存同步的四种方法
  7. iOS-UICollectionView快速构造/拖拽重排/轮播实现
  8. python输入输出姓名_python学习笔记-执行与输入输出
  9. 32树莓派_树莓派推出8GB内存版本
  10. EXTASP.Net几天使用总结
  11. session过期删除php,session过期怎么恢复?
  12. JAVA校园二手交易平台
  13. Excel加载宏.xla文件的使用方法
  14. 强化学习基础 | (15) A3C
  15. 国内外著名黑客杂志 《转》
  16. 《代码大全》读书笔记
  17. 西南地区首次大型“社区面基 Party”落幕,TiDB TechDay 下一站深圳见!
  18. CSS中如何设置父元素透明度不影响子元素透明度
  19. PHP MYSQLi 过程式准备好语句
  20. 学计算机装机,新手学装机:小白如何从零开始学装机

热门文章

  1. Ubuntu桌面卡顿、不流畅、反应慢解决
  2. 计算机一级演示文稿位置在哪里,2017年计算机一级MSOffice考点解析:创建演示文稿...
  3. Sql Server (MSSQL)编码的查询与识别
  4. 一个月的高效工作,全靠这一招
  5. 数据结构算法——滑动窗口问题(以LeetCode滑动窗口题为例)
  6. 10111001的曼彻斯特编码_曼彻斯特编码
  7. pycharm安装pytorch
  8. Android 热修复核心原理
  9. 黑客黑科技?Python代码让android手机实现监控功能
  10. Android手机无Root导出应用数据库