tensorflow卷积层操作

全连接NN:

每个神经元与前后相邻层的每一个神经元都有全连接关系。输入是特征,输出为预测结果。

参数个数\sum(前层*后层+后层)

实际应用时,会先对原始图像进行特征提取,再把提取到的特征送给全连接网络

会先进行若干层提取,把提取的特征放入全连接网络。

卷积计算可以认为是一个有效提取图像特征的方法。

一般会用一个正方形的卷积核,按指定步长,在输入特征图上滑动,遍历输入特征图中的每个像素点。

当前卷积核的个数,决定了输出特征图的深度 

卷积利用立体卷积核实现参数空间共享。对应元素相乘+偏置项b。

红绿蓝三层分别和各层卷积相乘+b求和,得到输出特征图的一项。

按指定步长滑动。

使用CNN实现离散数据的分类(以图像分类为例)

感受野:卷积神经网络各层输出特征图中的每个像素点,在原始输入图片上映射区域的大小,

 当输入特征图边长大于10个像素点时,3*3性能要比5*5好。

全零填充

当使用全零填充时=输入特征 5/1=5

不全零填充 特征-卷积核+1/步长 向上取整

tf.keras.layers.Conv2D( filters = 卷积核个数,kernel_size= 卷积核尺寸, strides=滑动步长,padding="same"or"valid",activation="relu"...)

批标准化

标准化:使数据符合0的均值,1为标准差的分布,】

批标准化:对一小撮数据做标准化处理

Hi' = HiK - uK/δ

 BN操作将原本偏移的特征数据拉回线性区域。使得输入数据的微小变化更明显的体现到激活函数的输出,提升激活函数对数据的区分力,但使激活函数丧失了非线性特征,因此在BN操作中引入缩放因子γ和偏移因子β,保证函数的非线性表达力。

池化操作

池化用于减少特征数据量,最大值池化可提取图片纹理,均值池化可保留背景特征。

tf.keras.layers.MaxPool2D(pool_size=, strides=, padding=)

舍弃

在神经网络训练时,将一部分神经元按照一定概率从神经元中暂时舍弃,神经网络使用时被舍弃的神经元恢复链接

tf.keras.layers.Dropout(舍弃的概率)

卷积神经网络:借助卷积核特征提取后,送入全连接网络

卷积神经网络的八股套路。

卷积就是特征提取器。CDAPB 

cifar10数据集

cifar10=tf.keras.datasets.cifar10

load_data()读取训练集。

x_train 是5万个32行32列3通道的RGB像素点

卷积神经网络搭建示例

使用6个5x5的卷积核,过2*2的池化核,池化步长是2

过128个神经元的全连接层,最后要过一个10个神经元的全连接层,因为有10个特征

C(核6*5*5,步长1,填充:same)

B(yes)

A(relu)

P(max, 核2*2 ,步长:2,填充:same)

Flatten

Dense(神经元:128,激活relu, Dropout:0.2)

Dense(深刻警员:10,激活softmax )

class

 Baseline(Model):

        def __init__(self):

                super(Baseline, self).__init__()

           C  self.c1 = Conv2D(filters+6, kernel_size=(5, 5),padding='same') #6个卷积核,5*5,使用全零填充

           B  self.b1 = BarchNoermalization()     #使用BN操作

          A   self.a1 = Activation('relu')  #激活函数

         P self.p1 = MaxPool12D(pool_size=(2,2), strides=2,padding='same')  # 池化核是2*2, 池化步长是2

         D self.d1 = Dropout(0.2)        #百分之20休眠神经元

            self.flatten = Flatten() #拉直

             self.f1 = Dense(128, activation='relu') #送入128个神经元的全连接

            self.d2 = Dropout(0.2)# 按照百分之20休眠神经元

           self.f2 = Dense(10, activation='softmax') #送入10个神经元的全连接

使用call调用init函数每个网络结构,从输入到输出,过一次前向传播。返回推理结果

#配置训练方法,选择哪种优化器,选择哪个损失函数,那种评测指标
model.compile

# 告知训练集的输入特征和标签,,每个batch是多少,要迭代,训练集,告知多少次迭代测试集验证准确率,使用回调函数完成断点续训
history = model.fit

import tensorflow as tf
import os
import numpy as np
from matplotlib import pyplot as plt
from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dropout, Flatten, Dense
from tensorflow.keras import Modelnp.set_printoptions(threshold=np.inf)cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0class Baseline(Model):def __init__(self):super(Baseline, self).__init__()self.c1 = Conv2D(filters=6, kernel_size=(5, 5), padding='same')  # 卷积层self.b1 = BatchNormalization()  # BN层self.a1 = Activation('relu')  # 激活层self.p1 = MaxPool2D(pool_size=(2, 2), strides=2, padding='same')  # 池化层self.d1 = Dropout(0.2)  # dropout层self.flatten = Flatten()self.f1 = Dense(128, activation='relu')self.d2 = Dropout(0.2)self.f2 = Dense(10, activation='softmax')def call(self, x):x = self.c1(x)x = self.b1(x)x = self.a1(x)x = self.p1(x)x = self.d1(x)x = self.flatten(x)x = self.f1(x)x = self.d2(x)y = self.f2(x)return ymodel = Baseline()
#配置训练方法,选择哪种优化器,选择哪个损失函数,那种评测指标
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])checkpoint_save_path = "./checkpoint/Baseline.ckpt"
if os.path.exists(checkpoint_save_path + '.index'):print('-------------load the model-----------------')model.load_weights(checkpoint_save_path)cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,save_weights_only=True,save_best_only=True)
# 告知训练集的输入特征和标签
history = model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1,callbacks=[cp_callback])
model.summary()# print(model.trainable_variables)
file = open('./weights.txt', 'w')
for v in model.trainable_variables:file.write(str(v.name) + '\n')file.write(str(v.shape) + '\n')file.write(str(v.numpy()) + '\n')
file.close()###############################################    show   ################################################ 显示训练集和验证集的acc和loss曲线
acc = history.history['sparse_categorical_accuracy']
val_acc = history.history['val_sparse_categorical_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']plt.subplot(1, 2, 1)
plt.plot(acc, label='Training Accuracy')
plt.plot(val_acc, label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.legend()plt.subplot(1, 2, 2)
plt.plot(loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.show()

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

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

相关文章

C嘎嘎类与对象上篇

类的定义 1. class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略 。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。 2. C中struct也可以…

【C语言】C语言-学生籍贯信息记录系统(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

泛微e-cology getFileViewUrl接口存在SSRF漏洞复现 [附POC]

文章目录 泛微e-cology getFileViewUrl接口存在SSRF漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议泛微e-cology getFileViewUrl接口存在SSRF漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章…

【密码学】哈希函数与加密算法的关系

一、哈希函数的定义 哈希函数(Hash Function),也被称为散列函数或杂凑函数, 是一种将任意长度的输入数据(通常称为“预映射”或“消息”)转换为固定长度输出(通常称为“哈希值”、“散列值”、“…

PHP红包拓客微信小程序系统源码

🎉红包狂欢,客源滚滚来!红包拓客微信小程序,营销新利器🚀 🧧一、创意红包,吸引眼球 你还在为如何吸引顾客而烦恼吗?红包拓客微信小程序来帮你!🎁 它以创意红…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(六)仿钉钉流程的转bpmn流程图

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、转bpmn流程图接口 /*** 转为bpmn xml格式* param processModel* throws IOException*/PostMapping("/ddtobpmnxml")public Result<?> ddToBpmnXml(RequestBody Proce…

TIA博途Wincc中画箭头和管道的具体方法示例

TIA博途Wincc中画箭头和管道的具体方法示例 如何画箭头? 如下图所示,在右侧的工具箱中找到基本对象—线,点击选中, 如下图所示,在画面中添加一条线段,然后右键进入该线段的属性,设置线的外观: 宽度、样式、颜色; 线端:这里可以选择起始和结束的样式,选择“箭头”,则…

自闭症孩子能否正常上普校:一场充满挑战与希望的探讨

在教育的舞台上&#xff0c;自闭症孩子​​​​​​​能否正常融入普通学校&#xff0c;是一个备受关注且充满争议的话题。 支持自闭症孩子上普校的观点认为&#xff0c;普通学校能为他们提供更接近真实社会的环境。在普校中&#xff0c;自闭症孩子有机会与不同类型的同学交流互…

IDEA实现热部署

什么是热部署&#xff1f; 热部署&#xff08;Hot Deployment&#xff09;是指在应用程序运行过程中&#xff0c;无需停止整个应用程序或重新启动服务器&#xff0c;就能够部署新的代码、资源或配置文件&#xff0c;使其立即生效。这种部署方式有助于提高开发效率和系统的可用性…

【系统架构设计】计算机组成与体系结构(三)

计算机组成与体系结构&#xff08;三&#xff09; 计算机系统组成存储器系统主存储器辅助存储器Cache存储器Cache 基本原理映射机制直接映射全相联映射组相联映射 替换算法写操作 流水线&#xff08;计算&#xff09;流水线周期流水线执行时间流水线的吞吐率流水线的加速比 计算…

卷积是如何计算的

使用代码&#xff0c;看卷积是如何计算的。 torch.nn torch.nn.functional srtide 的用法&#xff0c;代表卷积核的步幅 import torch import torch.nn.functional as F # 这个是输入的一个二维矩阵 input torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],…

Javascript[ECMAScript] 新特性—1

背景 JS1.1&#xff08;1997&#xff09; 第一版基于Netscape Navigator 3.0中实现的JAVASCRIPT 1.1 JS1.2&#xff08;1999&#xff09; 基于Netscape Navigator 4.0中实现的JavaScript 1.2。添加了正则表达式、更好的字符串处理、新的控制语句、Try/Catch异常处理、更严格…

推荐3个提升工作效率的实用电脑工具

PearOCR PearOCR是一款基于网络的光学字符识别&#xff08;OCR&#xff09;工具&#xff0c;旨在通过先进的图像处理和机器学习技术&#xff0c;快速、准确地从图片中提取文字。该工具的所有功能完全免费&#xff0c;这主要得益于其所有文件都在本地进行识别&#xff0c;不需要…

完美解决:MySQL8报错:Public Key Retrieval is not allowed

在配置数据源的时候直接将属性allowPublicKeyRetrieval设置为true即可 &AutoReconnecttrue

使用getopt处理参数

文章目录 使用getopt处理参数1. shift 命令1.1 删除一个参数1.2 删除多个参数1.3 多次执行 shift 参数1.4 参数解析示例1.5 优化处理1.6 问题处理 2. getopt 命令2.1 常用参数及示例2.2 脚本参数优化示例2.3 参数校验 3. 示例展示4. eval 命令4.1 示例示例 1示例 2示例 3示例 4…

33 IRF配置思路

IRF配置思路网络括谱图 主 Ten-GigabitEthernet 1/0/49 Ten-GigabitEthernet 1/0/50 Ten-GigabitEthernet 1/0/51 备 Ten-GigabitEthernet 2/0/49 Ten-GigabitEthernet 2/0/50 Ten-GigabitEthernet 2/0/51 思路 主 1 利用console线进入设备的命令行页面去更改…

【C语言】C语言-身份证管理系统(源码+注释)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

关于.NETCORE站点程序部署到nginx上无法访问静态文件和无法正确生成文件的问题解决过程。

我的netcore6项目&#xff0c;部署到IIS的时候&#xff0c;生成报告时&#xff0c;需要获取公司LOGO图片放到PDF报告文件中&#xff0c;这时候访问静态图片没有问题。 然后还有生成邀请二维码图片&#xff0c;这时候动态创建图片路径和图片也没有问题&#xff0c;可以在站点的…

Python爬虫教程第4篇-使用BeautifulSoup解析html

文章目录 Beautiful Soup简介安装Beautiful Soup快速开始如何使用Beautiful Soup中的对象TagNameAttributes多值属性 NavigableStringBeautifulSoupComment 遍历文档树子节点tag名字.contents 和 .children.descendants.strings 和 stripped_strings 父节点.parent.parents 兄弟…

git批量删除本地包含某字符串的特定分支

git批量删除本地包含某字符串的特定分支 git branch -a | grep 分支中包含的字符串 | xargs git branch -D git删除本地分支_git查看删除本地分支-CSDN博客文章浏览阅读989次。git branch -d <分支名>可以通过: git branch 查看所有本地分支及其名字&#xff0c;然后删…