广西冶金建设公司网站公司网站建设制作价格

张小明 2026/1/2 5:42:15
广西冶金建设公司网站,公司网站建设制作价格,如何建立自己的网页,服装网站ui设计此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下#xff1a; 原课程视频链接#xff1a;[双语字幕]吴恩达深度学习deeplearning.aigithub课程资料#xff0c;含课件与笔记:吴恩达深度学习教学资料课程配套练习#xff08;中英#xff09;与答案#…此分类用于记录吴恩达深度学习课程的学习笔记。课程相关信息链接如下原课程视频链接[双语字幕]吴恩达深度学习deeplearning.aigithub课程资料含课件与笔记:吴恩达深度学习教学资料课程配套练习中英与答案吴恩达深度学习课后习题与答案本篇为第四课第一周的课后习题和代码实践部分。1. 理论习题【中英】【吴恩达课后测验】Course 4 -卷积神经网络 - 第一周测验本周的题多是一些尺寸和参数量的计算只要对公式和层级结构足够熟练就没什么大问题。来看看这道可能容易混淆的题把下面这个过滤器应用到灰度图像会怎么样\[\begin{bmatrix} 0 1 -1 0\\ 1 3 -3 -1\\ 1 3 -3 -1\\ 0 1 -1 0 \end{bmatrix} \]答案检测竖直边缘。这道题乍一看可能会有些迷惑但是观察就会发现左右数字对称符号相反。也就是说如果应用这个过滤器当对应区域左右像素接近时结果就几乎为0。但当左右像素出现较大差别时结果的绝对值就会较大。这就是竖直边缘的逻辑如果把整个矩阵旋转 90 度检测的就是水平边缘只是二者的效果可能都没有我们常用的边缘检测过滤器好。2. 代码实践吴恩达卷积神经网络实战同样这位博主还是手工构建了卷积网络中的各个组件有兴趣可以链接前往。我们还是用 PyTorch 来进行演示终于正式引入了卷积网络还是用猫狗二分类来看看卷积网络在图学习中的效果。首先来看看 PyTorch 中如何定义卷积层/* by yours.tools - online tools website : yours.tools/zh/editor.html */ self.conv1 nn.Conv2d(3, 16, kernel_size3, padding0, stride1) # Conv2d 是指二维卷积虽然图片可以有多个通道但它实际上还是二维的”纸片人“。 # Conv3d 便适用于视频和 3D 图片这样的三维数据。 # 316 是指输入和输入的通道数必须显式指定。 # kernel_size3 是卷积核尺寸必须显式指定。 # padding0 0 就是padding 的默认值。 # stride 就是步长1 就是步长的默认值。再看看池化层/* by yours.tools - online tools website : yours.tools/zh/editor.html */ self.max_pool1 nn.MaxPool2d(kernel_size2, stride2) # MaxPool2d 即为最大池化。 # 在池化层中stride 默认和 kernel_size 相同。 # 池化层会自适应输入通道数因此不用显示指定。 self.avg_pool2 nn.AvgPool2d(kernel_size2, stride2) # 同理AvgPool2d 就是平均池化。现在我们就来看看卷积网络的使用效果。2.1 卷积网络 1.0我们现在设计卷积网络如下class SimpleCNN(nn.Module): def __init__(self): super().__init__() # 卷积层 self.conv1 nn.Conv2d(3, 16, kernel_size3, padding1) self.conv2 nn.Conv2d(16, 32, kernel_size3, padding1) self.conv3 nn.Conv2d(32, 64, kernel_size3, padding1) self.pool nn.MaxPool2d(2, 2) # 全连接层 self.fc1 nn.Linear(64 * 16 * 16, 128) self.fc2 nn.Linear(128, 1) def forward(self, x): x self.conv1(x) x F.relu(x) # 另一种调用激活函数的方式 x self.pool(x) x self.conv2(x) x F.relu(x) x self.pool(x) x self.conv3(x) x F.relu(x) x self.pool(x) x torch.flatten(x, 1) # 进入全连接层前要先展平 x self.fc1(x) x self.fc2(x) x torch.sigmoid(x) return x来看看运行结果如何可以看到仅仅经过 20 轮训练训练准确率就几乎达到 100% 但是验证准确率却仍在70%左右徘徊。这是典型的过拟合现象模型的学习能力很强但是泛化能力不好。经过前面的内容我们已经了解了很多可以缓解过拟合现象的方法。现在我们就开始一步步调试缓解过拟合现象增强模型的泛化能力。2.2 卷积网络 2.0加入 Dropout我们在正则化部分了解了可以通过应用 dropout 来缓解过拟合现在就来看看效果。如果你有些忘了什么是dropout它的第一次出现在这里dropout正则化应用 dropout 后我们更新网络结构如下class SimpleCNN(nn.Module): def __init__(self): super().__init__() # 卷积层 self.conv1 nn.Conv2d(3, 16, kernel_size3, padding1) self.conv2 nn.Conv2d(16, 32, kernel_size3, padding1) self.conv3 nn.Conv2d(32, 64, kernel_size3, padding1) self.pool nn.MaxPool2d(2, 2) # 全连接层 self.fc1 nn.Linear(64 * 16 * 16, 128) self.fc2 nn.Linear(128, 1) # dropout self.dropout nn.Dropout(p0.3) def forward(self, x): x self.conv1(x) x F.relu(x) x self.pool(x) x self.dropout(x) # dropout x self.conv2(x) x F.relu(x) x self.pool(x) x self.dropout(x) # dropout x self.conv3(x) x F.relu(x) x self.pool(x) x self.dropout(x) # dropout x torch.flatten(x, 1) x self.fc1(x) x self.dropout(x) # dropout x self.fc2(x) x torch.sigmoid(x) return x现在再来看看结果你会发现dropout 确实有作用增加训练轮次为 30 轮训练集上的准确率上升的没有那么快了确实和验证准确率的差距更小了。但问题是验证准确率也没上去啊原本的过拟合问题现在变成了欠拟合问题模型对数据的拟合能力不足而且通过趋势会发现如果继续训练仍存在过拟合风险。那该怎么办呢我们知道无论是过拟合还是欠拟合我们希望提高模型性能最直接的方法就是增加数据量。我们先不急着上网找图片不如就先试试我们之前经常提到的数据增强看看效果如何。2.3 卷积网络 3.0进行数据增强现在我们要进行数据增强那么要修改的代码内容就换到了预处理部分。同样数据增强第一次出现在这里其他缓解过拟合的方法现在我们仍然保留上一步的 dropout 内容修改预处理代码如下transform transforms.Compose([ transforms.Resize((128, 128)), transforms.RandomHorizontalFlip(),# 图片有 50% 可能水平翻转 transforms.RandomRotation(10), # 在 角度 -10° 到 10° 之间随机旋转图像。 transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ])再再来看看效果如何不是好像变化不大啊别着急之前我们一直在关注准确率但是你会发现在相同的训练轮次下损失仍在平稳下降但是下降的更慢了并没有达到最开始过拟合的损失水平比刚加入 dropout 时的损失还要高。这说明我们还没有达到模型的上限。现在继续维持其他内容不变只增加训练轮次我们再来运行看看。现在把训练轮次增加到100轮就可以发现验证准确率有了一定的提升但好像还是有过拟合风险如果要继续修改可以选择提高 dropout 的比率也可以尝试其他正则化。简单了解卷积层的性能后我们就不在继续调试了。实际上通过继续修改网络结构或者继续增强数据还可以让模型有更多的提升但就不在这里演示了。下一周的内容就是对现有的一些经典网络结构的介绍到时候我们再来看看出色的网络结构是什么效果。3.附录3.1 卷积网络 3.0 pytorch代码import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader, random_split import matplotlib.pyplot as plt transform transforms.Compose([ transforms.Resize((128, 128)), transforms.RandomHorizontalFlip(), transforms.RandomRotation(10), transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) dataset datasets.ImageFolder(root./cat_dog, transformtransform) train_size int(0.8 * len(dataset)) val_size int(0.1 * len(dataset)) test_size len(dataset) - train_size - val_size train_dataset, val_dataset, test_dataset random_split(dataset, [train_size, val_size, test_size]) train_loader DataLoader(train_dataset, batch_size32, shuffleTrue) val_loader DataLoader(val_dataset, batch_size32, shuffleFalse) test_loader DataLoader(test_dataset, batch_size32, shuffleFalse) class SimpleCNN(nn.Module): def __init__(self): super().__init__() # 卷积层 self.conv1 nn.Conv2d(3, 16, kernel_size3, padding1) self.conv2 nn.Conv2d(16, 32, kernel_size3, padding1) self.conv3 nn.Conv2d(32, 64, kernel_size3, padding1) self.pool nn.MaxPool2d(2, 2) # 全连接层 self.fc1 nn.Linear(64 * 16 * 16, 128) self.fc2 nn.Linear(128, 1) self.dropout nn.Dropout(p0.3) def forward(self, x): x self.conv1(x) x F.relu(x) x self.pool(x) x self.dropout(x) x self.conv2(x) x F.relu(x) x self.pool(x) x self.dropout(x) x self.conv3(x) x F.relu(x) x self.pool(x) x self.dropout(x) x torch.flatten(x, 1) x self.fc1(x) x self.dropout(x) x self.fc2(x) x torch.sigmoid(x) return x device torch.device(cuda if torch.cuda.is_available() else cpu) model SimpleCNN().to(device) criterion nn.BCELoss() optimizer optim.Adam(model.parameters(), lr1e-3) epochs 100 train_losses [] train_accuracies [] val_accuracies [] for epoch in range(epochs): model.train() epoch_loss 0 correct_train 0 total_train 0 for images, labels in train_loader: images, labels images.to(device), labels.to(device).float().unsqueeze(1) outputs model(images) loss criterion(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() epoch_loss loss.item() preds (outputs 0.5).int() correct_train (preds labels.int()).sum().item() total_train labels.size(0) avg_loss epoch_loss / len(train_loader) train_acc correct_train / total_train train_losses.append(avg_loss) train_accuracies.append(train_acc) model.eval() correct_val 0 total_val 0 with torch.no_grad(): for images, labels in val_loader: images, labels images.to(device), labels.to(device).float().unsqueeze(1) outputs model(images) preds (outputs 0.5).int() correct_val (preds labels.int()).sum().item() total_val labels.size(0) val_acc correct_val / total_val val_accuracies.append(val_acc) print(f轮次: [{epoch1}/{epochs}], 训练损失: {avg_loss:.4f}, 训练准确率: {train_acc:.4f}, 验证准确率: {val_acc:.4f}) # 可视化 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False plt.plot(train_losses, label训练损失) plt.plot(train_accuracies, label训练准确率) plt.plot(val_accuracies, label验证准确率) plt.title(训练损失、训练准确率、验证准确率变化曲线) plt.xlabel(训练轮次Epoch) plt.ylabel(数值) plt.legend() plt.grid(True) plt.show() # 最终测试可忽略 model.eval() correct_test 0 total_test 0 with torch.no_grad(): for images, labels in test_loader: images, labels images.to(device), labels.to(device).float().unsqueeze(1) outputs model(images) preds (outputs 0.5).int() correct_test (preds labels.int()).sum().item() total_test labels.size(0) test_acc correct_test / total_test print(f测试准确率: {test_acc:.4f})3.2 卷积网络 3.0 TF版代码import tensorflow as tf from tensorflow.keras import layers, models import matplotlib.pyplot as plt img_size (128, 128) batch_size 32 train_ds tf.keras.preprocessing.image_dataset_from_directory( ./cat_dog, validation_split0.2, subsettraining, seed42, image_sizeimg_size, batch_sizebatch_size ) val_test_ds tf.keras.preprocessing.image_dataset_from_directory( ./cat_dog, validation_split0.2, subsetvalidation, seed42, image_sizeimg_size, batch_sizebatch_size ) val_size int(0.5 * len(val_test_ds)) val_ds val_test_ds.take(val_size) test_ds val_test_ds.skip(val_size) data_augmentation tf.keras.Sequential([ layers.RandomFlip(horizontal), layers.RandomRotation(0.1) ]) normalization layers.Rescaling(1/0.5, offset-1) AUTOTUNE tf.data.AUTOTUNE train_ds train_ds.map(lambda x, y: (normalization(data_augmentation(x)), y)).prefetch(AUTOTUNE) val_ds val_ds.map(lambda x, y: (normalization(x), y)).prefetch(AUTOTUNE) test_ds test_ds.map(lambda x, y: (normalization(x), y)).prefetch(AUTOTUNE) train_ds train_ds.cache().shuffle(1000).prefetch(tf.data.AUTOTUNE) val_ds val_ds.cache().prefetch(tf.data.AUTOTUNE) model models.Sequential([ layers.Conv2D(16, (3, 3), paddingsame, activationrelu, input_shapeimg_size (3,)), layers.MaxPooling2D(2, 2), layers.Dropout(0.3), layers.Conv2D(32, (3, 3), paddingsame, activationrelu), layers.MaxPooling2D(2, 2), layers.Dropout(0.3), layers.Conv2D(64, (3, 3), paddingsame, activationrelu), layers.MaxPooling2D(2, 2), layers.Dropout(0.3), layers.Flatten(), layers.Dense(128, activationrelu), layers.Dense(1, activationsigmoid) ]) model.summary() model.compile( optimizertf.keras.optimizers.Adam(1e-3), lossbinary_crossentropy, metrics[accuracy] ) epochs 100 history model.fit( train_ds, validation_dataval_ds, epochsepochs ) plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False plt.plot(history.history[loss], label训练损失) plt.plot(history.history[accuracy], label训练准确率) plt.plot(history.history[val_accuracy], label验证准确率) plt.title(训练损失、训练准确率、验证准确率变化曲线) plt.xlabel(训练轮次Epoch) plt.ylabel(数值) plt.legend() plt.grid(True) plt.show() test_loss, test_acc model.evaluate(test_ds) print(f测试准确率: {test_acc:.4f})
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

成都专业做游戏网站重庆建设安全管理网

语音生物特征认证:下一代身份验证技术深度解析 【免费下载链接】pipecat Open Source framework for voice and multimodal conversational AI 项目地址: https://gitcode.com/GitHub_Trending/pi/pipecat 在数字身份安全日益重要的今天,传统的密…

张小明 2025/12/31 18:01:10 网站建设

手机版商城网站都有哪 些功能购物型网站用dw做

AI篮球分析系统终极指南:三步实现专业级投篮技术评估 【免费下载链接】AI-basketball-analysis 项目地址: https://gitcode.com/gh_mirrors/ai/AI-basketball-analysis 还在为投篮动作不规范而苦恼?想用科技手段提升篮球训练效果?&am…

张小明 2025/12/31 17:59:06 网站建设

网站开发手把手怎么自己制作一个网站的书源

想要从卫星雷达数据中精准捕捉地表毫米级位移?StaMPS(Stanford Method for Persistent Scatterers)正是您需要的专业工具。这款由斯坦福大学开发的先进软件,巧妙融合了持久散射体和小基线两种技术路线,为地质灾害预警和…

张小明 2025/12/31 17:57:04 网站建设

国土资源局网站建设制度邢台业之峰装饰公司怎么样

Dify智能体平台如何集成WebSocket实现实时通信? 在AI应用日益普及的今天,用户早已不再满足于“点击-等待-查看结果”这种静态交互模式。无论是智能客服中期待即时回复,还是内容生成场景下希望看到文字像打字机一样逐字浮现,实时性…

张小明 2025/12/31 17:55:02 网站建设

服装型网站开发网站建设销售是做什么的

《深入探究 send 命令:功能、应用与对比》 在自动化脚本和交互式程序控制中, send 命令是一个强大且常用的工具。它能够向进程发送字符串,并且具备多种特殊功能,如控制字符发送的时间间隔、处理多进程通信等。本文将详细介绍 send 命令的各个方面,包括隐式与显式 sp…

张小明 2026/1/2 2:30:40 网站建设

网站推广到海外怎么做住房和城乡建设部门户网站

MouseTester是一款专业的鼠标性能测试工具,能够帮助用户精准评估鼠标响应速度、点击延迟与移动轨迹等关键指标。作为开源性能测试工具中的轻量解决方案,它通过直观的可视化界面呈现测试数据,特别适合游戏玩家、设计师等对鼠标性能敏感的用户。…

张小明 2026/1/2 4:20:51 网站建设