当前位置: 首页 > news >正文

卷积神经网络-奥特曼识别

 数据集 

 四种奥特曼图片_数据集-飞桨AI Studio星河社区 (baidu.com)

 中间的隐藏层 已经使用参数的空间

Conv2D卷积层

ReLU激活层

MaxPool2D最大池化层

AdaptiveAvgPool2D自适应的平均池化

Linear全链接层

Dropout放置过拟合,随机丢弃神经元

--------------------------------------------------------------------------------Layer (type)          Input Shape          Output Shape         Param #    
================================================================================Conv2D-1        [[50, 3, 227, 227]]   [50, 64, 227, 227]       1,792     ReLU-1        [[50, 64, 227, 227]]   [50, 64, 227, 227]         0       Conv2D-2       [[50, 64, 227, 227]]   [50, 64, 227, 227]      36,928     ReLU-2        [[50, 64, 227, 227]]   [50, 64, 227, 227]         0       MaxPool2D-1     [[50, 64, 227, 227]]   [50, 64, 113, 113]         0       Conv2D-3       [[50, 64, 113, 113]]  [50, 128, 113, 113]      73,856     ReLU-3        [[50, 128, 113, 113]] [50, 128, 113, 113]         0       Conv2D-4       [[50, 128, 113, 113]] [50, 128, 113, 113]      147,584    ReLU-4        [[50, 128, 113, 113]] [50, 128, 113, 113]         0       MaxPool2D-2     [[50, 128, 113, 113]]  [50, 128, 56, 56]          0       Conv2D-5        [[50, 128, 56, 56]]   [50, 256, 56, 56]       295,168    ReLU-5         [[50, 256, 56, 56]]   [50, 256, 56, 56]          0       Conv2D-6        [[50, 256, 56, 56]]   [50, 256, 56, 56]       590,080    ReLU-6         [[50, 256, 56, 56]]   [50, 256, 56, 56]          0       Conv2D-7        [[50, 256, 56, 56]]   [50, 256, 56, 56]       590,080    ReLU-7         [[50, 256, 56, 56]]   [50, 256, 56, 56]          0       MaxPool2D-3      [[50, 256, 56, 56]]   [50, 256, 28, 28]          0       Conv2D-8        [[50, 256, 28, 28]]   [50, 512, 28, 28]      1,180,160   ReLU-8         [[50, 512, 28, 28]]   [50, 512, 28, 28]          0       Conv2D-9        [[50, 512, 28, 28]]   [50, 512, 28, 28]      2,359,808   ReLU-9         [[50, 512, 28, 28]]   [50, 512, 28, 28]          0       Conv2D-10       [[50, 512, 28, 28]]   [50, 512, 28, 28]      2,359,808   ReLU-10        [[50, 512, 28, 28]]   [50, 512, 28, 28]          0       MaxPool2D-4      [[50, 512, 28, 28]]   [50, 512, 14, 14]          0       Conv2D-11       [[50, 512, 14, 14]]   [50, 512, 14, 14]      2,359,808   ReLU-11        [[50, 512, 14, 14]]   [50, 512, 14, 14]          0       Conv2D-12       [[50, 512, 14, 14]]   [50, 512, 14, 14]      2,359,808   ReLU-12        [[50, 512, 14, 14]]   [50, 512, 14, 14]          0       Conv2D-13       [[50, 512, 14, 14]]   [50, 512, 14, 14]      2,359,808   ReLU-13        [[50, 512, 14, 14]]   [50, 512, 14, 14]          0       MaxPool2D-5      [[50, 512, 14, 14]]    [50, 512, 7, 7]           0       
AdaptiveAvgPool2D-1   [[50, 512, 7, 7]]     [50, 512, 7, 7]           0       Linear-1           [[50, 25088]]          [50, 4096]        102,764,544  ReLU-14           [[50, 4096]]           [50, 4096]             0       Dropout-1          [[50, 4096]]           [50, 4096]             0       Linear-2           [[50, 4096]]           [50, 4096]        16,781,312   ReLU-15           [[50, 4096]]           [50, 4096]             0       Dropout-2          [[50, 4096]]           [50, 4096]             0       Linear-3           [[50, 4096]]            [50, 4]            16,388     
================================================================================
Total params: 134,276,932
Trainable params: 134,276,932
Non-trainable params: 0
--------------------------------------------------------------------------------
Input size (MB): 29.49
Forward/backward pass size (MB): 11120.24
Params size (MB): 512.23
Estimated Total Size (MB): 11661.95
--------------------------------------------------------------------------------

如果paddle还没配置的话建议去网上搜一下,这里就不给链接了 

 用于训练模型的代码

import paddle
from paddle.io import Dataset,DataLoader
import os
from PIL import Image
import numpy as np
import paddle.vision.transforms as T
import matplotlib.pyplot as plt
from paddle.vision.datasets import DatasetFoldertransforms=T.Compose([T.Resize([227,227]),T.RandomRotation(degrees=[-10,10]),T.ColorJitter(0.4,0.4,0.4,0.4),T.ToTensor()])
dataset=DatasetFolder("aoteman",extensions=[".jpg"],transform=transforms)
#使用paddle.io.random_split切分训练集和测试集
from paddle.io import random_split
train_size=int(0.8*len(dataset))
test_size=len(dataset)-train_size
train_dataset,test_dataset=random_split(dataset=dataset,lengths=[train_size,test_size])
print(len(train_dataset),len(test_dataset))# plt.figure(figsize=[3,3])
# for idx,data in enumerate(train_dataset):
#     plt.subplot(3,3,idx+1)
#     im=data[0];label=data[1]
#     im=im.reshape([224,224,3])
#     plt.imshow(im)
#     if idx+1>=9:
#         break
# plt.show()print(dataset.class_to_idx)net=paddle.vision.models.vgg16(pretrained=True, num_classes=4)
paddle.summary(net,(50,3,227,227))#网络配置
lr=0.001
batch_size=50
#预训练模型优化器 Adam优化器
opt =paddle.optimizer.Adam(learning_rate=lr,parameters=net.classifier.parameters())
#损失函数
loss_fn=paddle.nn.CrossEntropyLoss()
#训练模式
net.train()
model=paddle.Model(net)
model.prepare(optimizer=opt,loss=loss_fn,metrics=paddle.metric.Accuracy())
import time
vsdl=paddle.callbacks.VisualDL(log_dir='vsdl/trainlog'+str(time.time()))
# model.load('mymodel/vgg_aoteman')
# res=model.predict()
model.fit(train_data=train_dataset,eval_data=test_dataset, batch_size=batch_size,epochs=1, verbose=1,shuffle=True,callbacks=vsdl)
model.save('mymodel/vgg_aoteman')

用于预测模型的代码

import mathimport paddle
import paddle.vision.transforms as Tfrom PIL import Image
from paddle.vision.datasets import DatasetFolder
import numpy as nptransforms = T.Compose([T.Resize([227, 227]), T.ToTensor()])
# 使用paddle.io.random_split切分训练集和测试集img = Image.open('aoteman/predict_demo.jpg')#输入图片
img.show()
img = transforms(img)
img = img.unsqueeze(0)start_index = 0  # 开始切片的索引
end_index = 3    # 结束切片的索引
axes = [1]       # 要切片的轴(通道轴)
img = paddle.slice(img, axes=axes, starts=[start_index], ends=[end_index])net = paddle.vision.models.vgg16(pretrained=True, num_classes=4)
# 网络配置
lr = 0.001
batch_size = 50
# 预训练模型优化器 Adam优化器
opt = paddle.optimizer.Adam(learning_rate=lr, parameters=net.classifier.parameters())
# 损失函数
loss_fn = paddle.nn.CrossEntropyLoss()
# 训练模式
net.train()
model = paddle.Model(net)
model.prepare(optimizer=opt, loss=loss_fn, metrics=paddle.metric.Accuracy())
import timevsdl = paddle.callbacks.VisualDL(log_dir='vsdl/trainlog' + str(time.time()))
model.load('mymodel/vgg_aoteman')# print(img)
res = model.predict_batch(img)sum=0
maxx=-1000000
idx=0
for i in range(4):# sum+=math.exp(res[0][0][i])if res[0][0][i]>maxx:maxx=res[0][0][i]idx=i# print(res[0][0][i])
# print(res)
# print(math.exp(res[0][0][idx])/sum*100,end='%:   ')
if idx==0:print("迪迦")
elif idx==1:print('杰克')
elif idx==2:print('赛文')
else:print('泰罗')

相关文章:

  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • Swoole 协程调度机制
  • 构建 VPC 并启动 Web 服务器
  • ADB安装教程
  • 修改python环境包的内容后如何及时更新到内存
  • 零拷贝(Zero Copy)
  • 动态分配函数参数用二级指针的作用
  • 将 cuda kernel 编译成 ptx 和 rocm的hip asm
  • CentOS7.9部署安装OpenGauss 5.0.2企业版
  • 【源码】Spring Data JPA原理解析之Repository自定义方法添加@Query注解的执行原理
  • 木叶飞舞之【机器人ROS2】篇章_第三节、给turtlebot3安装realsense深度相机
  • 大语言模型应用与传统程序的不同
  • R可视化:另类的柱状图
  • 生信分析进阶3 - pysam操作bam文件统计unique reads和mapped reads高级技巧合辑
  • Windows Server安全配置
  • 【刷算法】求1+2+3+...+n
  • 2017年终总结、随想
  • C++11: atomic 头文件
  • Fabric架构演变之路
  • windows下如何用phpstorm同步测试服务器
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何选择开源的机器学习框架?
  • 三栏布局总结
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 主流的CSS水平和垂直居中技术大全
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (转)http协议
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • @Autowired 与@Resource的区别
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @拔赤:Web前端开发十日谈
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [.net]官方水晶报表的使用以演示下载
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [20150629]简单的加密连接.txt
  • [CC-FNCS]Chef and Churu
  • [CSS] - 修正IE6不支持position:fixed的bug
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [IE编程] IE中对网页进行截图的编程接口
  • [LeetCode] NO. 387 First Unique Character in a String
  • [NOI2020统一省选 A] 组合数问题 (推式子)
  • [Redis]基础入门
  • [SDOI2016]生成魔咒
  • [vijos1554bzoj1411]硬币游戏快速幂
  • [VulnHub靶机渗透] dpwwn: 1
  • [Z]Computer Modern的故事
  • [导入]创建一个存储过程,根据系部编号查出男生、女生人数
  • [工业自动化-10]:西门子S7-15xxx编程 - PLC主站 - 信号量:数字量
  • [激光原理与应用-72]:PLC架构与工作原理
  • [瞭望]RoR 在国内难以建立大型应用
  • [论文笔记] ICLR 2022 | 减少跨语言表示差异,字节跳动AI Lab通过流形混合增强跨语言迁移