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

 数据集 

 四种奥特曼图片_数据集-飞桨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('泰罗')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/843047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts快速入门

之前只看过,没写过,来了个新需求了解下echarts功能 官网:https://echarts.apache.org/handbook/zh/get-started 官方参数文档:https://echarts.apache.org/zh/option.html#title 其实大部分问题,去官方参数文档里面都…

【项目教程】FFmpeg+SDL2实现视频播放器

一、前言 学习ffmpeg和sdl,并编写一个视频播放器,是一个很好的音视频开发项目。 虽然关于视频播放器的原理已经有很多人在博客中进行了讲解,但是很多人不提供视频和代码,这也是我写这篇博客的主要原因。 二、在视频播放器中&am…

【组合数学 放球问题 虚拟点 小于等于转小于】1621. 大小为 K 的不重叠线段的数目

本文涉及知识点 放球问题 组合数学汇总 本题难道分:2198 LeetCode1621. 大小为 K 的不重叠线段的数目 给你一维空间的 n 个点,其中第 i 个点(编号从 0 到 n-1)位于 x i 处,请你找到 恰好 k 个不重叠 线段且每个线段…

零拷贝(Zero Copy)

目录 零拷贝(Zero Copy) 1.什么是Zero Copy? 2.物理内存和虚拟内存 3.内核空间和用户空间 4.Linux的I/O读写方式 4.1 I/O中断原理 4.2 DMA传输原理 5.传统I/O方式 5.1传统读操作 5.2传统写操作 6.零拷贝 6.1.用户态直接IO 6.2.mmapwrite …

免费使用知网下载文献

第一步:输入网址:https://digi.library.hb.cn:8443/#/(或搜索湖北省图书馆) 第二步:点击登录按钮。 第三步:使用手机 支付宝 扫描页面左侧二维码。 第四步:手机点击“电子读者证注册”。&…

抖音 v27.8.0 内置增强模块,自动播放、无水印下载(可登录,助手增强版)

介绍 抖音应用作为全球领先的短视频平台,其内置功能允许用户将喜欢的内容保存至本地设备,但默认情况下,这些视频会带有抖音的水印。为了解决这一限制,该版本使用户能够直接保存不带水印的视频到手机中,无需使用任何第…

R25 型双极型晶体管 433功率放大器,集电极电流可达100mA

R25 型硅基微波双极型晶体管是一种常见的晶体管,主要用于高频电子放大线路中。常被用作放大器、开关、变频器等电子电路中的核心元件。在放大电路中,它可以将微弱的信号放大到足以驱动输出负载;在开关电路中,它可以实现电路的打开…

易查分小程序 学生成绩管理小程序

亲爱的老师们,是不是每次成绩公布后,家长们的连环夺命call让你头大?担心孩子们的成绩信息安全,又想快速分享给家长,这可咋整?别急,易查分小程序来帮忙啦! 安全有保障 智能验证码&a…

基于tcp实现自定义应用层协议

认识协议 协议(Protocol) 是一种通信规则或标准,用于定义通信双方或多方之间如何交互和传输数据。在计算机网络和通信系统中,协议规定了通信实体之间信息交换的格式、顺序、定时以及有关同步等事宜的约定。简易来说协议就是通信…

【Linux】Linux下centos更换国内yum源

🌱博客主页:青竹雾色间 🌱系列专栏:Linux 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 1. 备份旧的 YUM 源文件2. 下载国内的 YUM 源文件阿里云:网易: 3. 清理 YUM 缓存4. 更新…

scp问题:Permission denied, please try again.

我把scp归纳三种情况: 源端root——》目标端root 源端root——》目标端mysql(任意)用户 源端(任意用户)——》目标端root用户 在scp传输文件的时候需要指导目标端的用户密码,如root用户密码、mysql用户…

选择海外代理IP需要注意什么?

跨境电商近年来的兴起与发展,越来越多的跨境从业者从事该行业,但在从事跨境贸易中则需要海外IP代理来突破地域限制、提升访问速度和稳定性、防止账号关联以及保护隐私和安全。这些功能都有助于跨境电商企业在全球范围内拓展业务,提升竞争力&a…

一文搞定jdk8升级到jdk11

一、背景 为什么要升级JDK11 性能 JDK11的G1的GC性能高很多,对比JDK8无论是性能还是内存占比都有很大的提升,业内各项数据指标也都表明JDK11的G1在应对突发流量的下的效果惊人; 版本兼容 Spring Boot 2.7.x及以后的版本将不再支持Java 8作为…

【IC】partial good

假设单core良率80%,core pass 数量分布呈二项分布。 16个core全pass的概率为: 有n个core pass的概率为: 分布如下: 当np>5且nq>5时,二项分布近似服从正态分布

python fstring教程(f-string教程)(python3.6+格式化字符串方法)

文章目录 Python F-String 教程:深度探究与实用指南引言基础用法什么是F-String?表达式嵌入 格式化选项小数点精度宽度与对齐数字格式化 高级用法复杂表达式调用函数多行F-String嵌套格式化 总结 Python F-String 教程:深度探究与实用指南 引言 在Pyt…

中间件是什么?信创中间件有哪些牌子?哪家好用?

当今社会,中间件的重要性日益凸显,尤其是在信创背景下,选择适合的中间件产品对于推动企业数字化转型和升级具有重要意义。今天我们就来聊聊中间件是什么?信创中间件有哪些牌子?哪家好用?仅供参考哈&#xf…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十二)- 微服务(2)

目录 4. Ribbon负载均衡 4.1 负载均衡流程 4.2 负载均衡策略 4.3 Ribbon饥饿加载 5. Nacos注册中心 5.1 服务注册到nacos 5.2 nacos服务分级存储模型 5.3 根据权重负载均衡 5.4 环境隔离--namespace 4. Ribbon负载均衡 4.1 负载均衡流程 4.2 负载均衡策略 默认实现是…

cesium绘制区域编辑

npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf <template><div id"cesiumContainer"></div&…

大学理科生搜题软件?分享四个软件和公众号,来对比看看吧 #笔记#知识分享

在快节奏的大学生活中&#xff0c;合理利用这些日常学习工具&#xff0c;能够让你事半功倍&#xff0c;提高学习效率。 1.福昕翻译 可以一键翻译文档内容&#xff0c;并提供还原排版的译文&#xff0c;对经常看外文文献的朋友来说&#xff0c;绝对是福音 福昕翻译是一流专业…

设计模式基础——设计原则介绍

1.概述 ​ 对于面向对象软件系统的设计而言&#xff0c;如何同时提高一个软件系统的可维护性、可复用性、可拓展性是面向对象设计需要解决的核心问题之一。面向对象设计原则应运而生&#xff0c;这些原则你会在设计模式中找到它们的影子&#xff0c;也是设计模式的基础。往往判…