Uncategorized
477 words
Sigmoid函数和ReLU函数是两种常用的激活函数,用于神经网络中的非线性转换。它们在神经网络中扮演着不同的角色,具有一些不同的性质。 Sigmoid函数:Sigmoid函数是一种典型的S型曲线函数,其数学表达式为:$\text{Sigmoid}(x) = \frac{1}{1 + e^{-x}}$ 特点: 输出范围在(0, 1)之间,将输入值压缩到0和1之间,因此常用于二分类问题中,将输出解释为概率。 Sigmoid函数的输出并不以0为中心,当输入较大或较小时,梯度会变得非常小,这会导致梯度消失问题。在深层神经网络中,可能出现梯度消失的情况,导致训练困难。 由于Sigmoid的指数运算,计算相对较慢。 ReLU函数(Rectified Linear Unit):ReLU函数是一种简单的非线性函数,其数学表达式为:$ReLU(x) = max(0, x)$ 特点: 对于正的输入,输出等于输入值,对于负的输入,输出为0。因此,ReLU激活函数能够更好地解决梯度消失问题。 ReLU函数的计算速度非常快,因为它只涉及简单的数值比较。 然而,对于一些负...
Uncategorized
433 words
Dropout是一种在深度学习模型中常用的正则化技术。它的作用是减少过拟合(overfitting)的风险,提高模型的泛化能力。 过拟合是指模型在训练数据上表现得非常好,但在未见过的新数据上表现较差的情况。这通常是因为模型过度拟合了训练数据中的噪声和特定样本的细节,导致在新数据上的泛化能力不佳。 Dropout层在训练过程中随机地将一部分神经元的输出置为0,即在前向传播过程中丢弃这些神经元的激活值。换句话说,每次进行前向传播时,Dropout会随机地使一部分神经元“失活”,不参与当前一次前向传播的计算。 这样做的效果是,每次前向传播时,模型都在不同的子集上进行训练,从而减少了神经元之间的复杂共适应关系。这样的处理有两个主要好处: 减少过拟合:Dropout可以强制模型去学习多个独立的特征表示,而不是依赖于特定的神经元。这有助于减少对训练样本的过度依赖,降低过拟合的风险。 提高泛化能力:由于Dropout在训练期间增加了一些随机性,模型在预测未见过的数据时更具有泛化能力。 需要注意的是,在推断(inference)阶段,Dropout不会被应用,而是采用整个网络进行预测。这...
Uncategorized
1.1k words
下载数据集从kaggle中找到dogs-vs-cats比赛,下载数据集压缩包并解压得到一个大数据集train文件夹。 这里我们不用这么多张图片,我们自己创建一个小型数据集进行学习,提升自我能力。 先给数据集路径做个YAML文件: data.yml文件的代码 1234# 原始数据集解压目录original_dir: "train"# 保存较小的数据集目录new_base_dir: "cats_vs_dogs_small" createdataset.py的代码 12345678910111213141516171819202122232425262728import os, shutil, pathlibimport yaml# 读取YAML文件with open('data.yml', 'r', encoding='utf-8') as file: data = yaml.safe_load(file)# 原始数据集解压目录original_dir = pathlib....
Uncategorized
639 words
day4 - 巅峰造极C++ 走迷宫1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include<cstdio>#include<cstdlib>#include<windows.h>#include<conio.h>using namespace std;int main(){ char map[50][50]={"###########", "#O # # ", "### # # ###", "# # #", "# ### #####", "# #", "###########"}; int x=...
Uncategorized
2.4k words
NN全连接神经网络这是我第一次实现一个神经网络实例:使用python的Keras库来学习手写数字分类。 过程都写在注释里了,下面是train.py的代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950from tensorflow import kerasfrom keras import layersfrom keras.datasets import mnistimport matplotlib.pyplot as plt# 加载数据集(train_images, train_lables), (test_images, test_labels) = mnist.load_data()print(train_images.shape) # (60000, 28, 28)print(train_lables) # [5 0 4 ... 5 6 8]model = keras.Sequential([ layers.Dense...
Uncategorized
758 words
day2 - 登堂入室 温故而知新 分治的作用 分治的思想 分治的写法(二分查找) 练习题:洛谷 P2249 查找 思考题:洛谷 P1676 Aggressive cows G 排序桶排序 - 最快的排序 思想 优点,适用范围 选择排序 - 打擂台 思想 改进12345678910111213141516171819202122232425262728293031#include<cstdio>#include<iostream>using namespace std;int main(){ int n; cin>>n; int a[1001]; for(int i=1;i<=n;i++) cin>>a[i]; //核心代码 for(int i=1;i<=n-1;i++){ int max=-99999999; int pos; for(int j=i;j<=n;j++){ if(a[j]>max){ max=a[j]; pos=j; ...
Uncategorized
505 words
day1 - 初窥门径 为什么要学编程 人工智能,边缘计算,大数据,通信工程,互联网,计算机科学与技术。。。 chatGPT stablediffusion VITS AR/VR 游戏制作 算法入门 神经网络,数据挖掘,数字孪生,进化算法,目标检测,语义分割。。。 什么是算法 程序=数据结构+算法 怎么学算法 分治 二分查找(非递归)12345678910111213141516171819202122232425262728293031323334#include <bits/stdc++.h> using namespace std;int a[1000000] = {0};//太大的数组要放到全局变量去int main(){ int n,x,r; int i,j,mid,left,right; cin>>n; //读入数组元素 for(i = 0;i < n;i++){ cin>>a[i]; }...
Uncategorized
399 words
当我们在深度学习训练时,可以将训练的结果通过邮箱发送给自己,以便及时查看训练结果。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162# smtplib 用于邮件的发信动作import smtplib# email 用于构建邮件内容from email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImage# 构建邮件头from email.header import Headerimport base64# path = r'xxx'def send(path): # 发信方的信息:发信邮箱,QQ 邮箱授权码 from_addr = '@qq.com' password = ...
Uncategorized
366 words
对于MTCNN最后的输出结果进行灰度处理,介于人眼对于R,G,B三种颜色的敏感度,所以采取按照一定的权值进行加权平均得到。 GRAY = 0.299 * red + 0.587 * green + 0.114 * blue 输出得到单通道灰度图片 123456789101112131415161718192021222324252627282930313233343536373839import numpy as npimport cv2def rgb_to_gray(image): red_weight = 0.299 green_weight = 0.587 blue_weight = 0.114 # 获取图像的高度、宽度和通道数 height, width, channels = image.shape # 创建一个空的灰度图像 gray_image = np.zeros((height, width), dtype=np.uint8) # 对每个像素进行加权求和 for i in range(height...
Uncategorized
539 words
TensorFlow和Keras是两个不同的深度学习框架,它们在设计理念、API风格和功能上有一些区别。 设计理念:TensorFlow是一个底层的、功能丰富的深度学习框架,它提供了灵活的计算图模型和强大的数值计算能力。它注重灵活性和可扩展性,使得开发者可以自由地构建和调整复杂的神经网络结构。Keras则是一个高级的神经网络API,旨在简化深度学习的开发过程。它的设计理念是用户友好性和易用性,提供了简洁一致的API,使得构建和训练模型变得更加容易。 API风格:TensorFlow的API设计更底层,开发者需要使用较多的代码来定义和管理计算图、张量和变量。它提供了更多底层操作的灵活性,适用于对深度学习框架有深入理解和更高级别控制需求的开发者。而Keras的API设计更高级和简洁,抽象了底层细节,使得构建模型和训练过程更加直观和简单。Keras的API更易于使用,尤其适合初学者和快速原型开发。 可扩展性:TensorFlow作为一个底层框架,提供了更大的灵活性和自定义能力,使得开发者可以更自由地构建和调整深度学习模型。它具有更多的可选组件和功能,适用于各种应用场景和研究领域。...