从代码学习深度学习 - 风格迁移 PyTorch版
文章目录
- 前言
- 方法 (Methodology)
- 阅读内容和风格图像
- 预处理和后处理
- 抽取图像特征
- 定义损失函数
- 内容损失 (Content Loss)
- 风格损失 (Style Loss)
- 全变分损失 (Total Variation Loss)
- 总损失函数
- 初始化合成图像
- 训练模型
- 总结
前言
大家好!欢迎来到我们的深度学习代码学习系列。今天,我们将深入探讨一个非常有趣且富有创意的计算机视觉领域——风格迁移 (Style Transfer)。
想象一下,你能否将梵高的《星夜》的独特笔触和色彩应用到你拍摄的一张城市风景照片上?或者将一幅著名油画的风格赋予你心爱的宠物照片?风格迁移技术正是致力于实现这种艺术融合的魔法。
简单来说,风格迁移的目标是生成一张新的图像,这张图像既保留了内容图像 (Content Image) 的主要结构和物体,又融入了风格图像 (Style Image) 的艺术纹理、色彩和笔触特点。这背后是深度学习,特别是卷积神经网络 (CNN) 的强大能力,它们能够从图像中学习并分离出内容表示和风格表示。
在本篇博客中,我们将一起:
- 理解风格迁移的基本原理和核心思想。
- 逐步分析并实现一个基于 PyTorch 的风格迁移模型。
- 学习如何定义和使用内容损失、风格损失以及全变分损失来指导模型的优化过程。
- 通过代码实践,将一张内容图像和一张风格图像融合成一张全新的艺术作品。
我们将详细解读每一个代码块,确保即使是初学者也能跟上节奏。希望通过这篇博客,你能不仅理解风格迁移的理论,更能亲手实现它,感受深度学习在创意应用上的魅力。
让我们开始这场艺术与代码的探索之旅吧!
完整代码:下载链接
方法 (Methodology)
风格迁移的核心思想是利用预训练的卷积神经网络 (CNN) 来分别提取内容图像的内容特征和风格图像的风格特征。然后,我们以内容图像(或随机噪声)为起点,生成一张初始的合成图像。这个合成图像是整个过程中唯一需要更新和优化的部分。
迭代优化的目标是让合成图像在内容上接近内容图像,在风格上接近风格图像。这是通过定义一个总损失函数来实现的,该损失函数通常包含三个部分:
- 内容损失 (Content Loss):衡量合成图像与内容图像在内容特征上的差异。我们希望合成图像能“看清”内容图像中的物体和场景。
- 风格损失 (Style Loss):衡量合成图像与风格图像在风格特征(如纹理、笔触、色彩分布)上的差异。我们希望合成图像能“模仿”风格图像的艺术风格。
- 全变分损失 (Total Variation Loss):作为一种正则化项,用于减少合成图像中的噪点,使其更加平滑自然。
下图展示了风格迁移的基本流程:
我们首先初始化合成图像,可以将其初始化为内容图像。该合成图像是风格迁移过程中唯一需要更新的变量,即风格迁移所需迭代的模型参数。然后,选择一个预训练的卷积神经网络来抽取图像的特征,其中的模型参数在训练中无须更新。这个深度卷积神经网络凭借多个层逐级抽取图像的特征,我们选择其中某些层的输出作为内容特征或风格特征。例如,上图中,预训练的神经网络含有多个卷积层和池化层,我们选择其中某些层的输出(如 relu4_2
作为内容特征,relu1_1
, relu2_1
, relu3_1
, relu4_1
, relu5_1
作为风格特征)。
接下来,通过前向传播计算风格迁移的损失函数,并通过反向传播迭代模型参数,即不断更新合成图像。当模型训练结束时,输出风格迁移的模型参数,即得到最终的合成图像。
阅读内容和风格图像
首先,我们需要加载我们的内容图像和风格图像。这里我们使用 PIL (Pillow) 库来加载图像,并用 Matplotlib 来显示它们。
# 图像风格迁移预处理代码
# 配置 matplotlib 行内显示|
%matplotlib inline# 导入必要的库
import torch # PyTorch 深度学习框架
import torchvision # PyTorch 的计算机视觉工具包
from torch import nn # 神经网络模块
import utils_for_huitu # 自定义的绘图工具模块
import matplotlib.pyplot as plt # 用于创建和操作 Matplotlib 图表
from PIL import Image # Python 图像处理库# 设置 matplotlib 图表的默认尺寸
# 该函数可能会设置全局的图表显示参数
utils_for_huitu.set_figsize()# 加载内容图像
# content_img: PIL Image 对象,维度为 (height, width, channels)
# 其中 channels 通常为 3(RGB)或 4(RGBA)
content_img = Image.open('img/test.jpeg')# 显示内容图像
# plt.imshow() 接受形状为 (H, W, C) 的数组,其中:
# H: 图像高度
# W: 图像宽度
# C: 颜色通道数(RGB为3)
plt.imshow(content_img)
plt.show() # 显示图像# 获取图像信息(可选)
if hasattr(content_img, 'size'):# 获取图像的宽度和高度img_width, img_height = content_img.size # PIL图像的尺寸为 (width, height)print(f"内容图像尺寸:宽度={img_width}px, 高度={img_height}px")
内容图像 img/test.jpeg
显示如下:
内容图像尺寸:宽度=600px, 高度=333px
style_img = Image.open('img/06_autumn-oak.jpg')
plt.imshow(style_img);
风格图像 img/06_autumn-oak.jpg
显示如下:
预处理和后处理
接下来,我们定义两个函数:preprocess
和 postprocess
。这两个函数负责将我们加载的 PIL 图像转换为神经网络可以处理的张量格式,以及在训练完成后将张量转换回图像格式以便显示。
预处理函数 preprocess
主要执行以下操作:
- 将输入图像的大小调整为指定的
image_shape
。 - 将 PIL 图像转换为 PyTorch 张量。这个过程会自动将图像的维度从 (H, W, C) 转换为 (C, H, W),并将像素值从 [0, 255] 的范围归一化到 [0, 1] 的范围。
- 对图像在 RGB 三个通道上分别进行标准化,使用的是 ImageNet 数据集的均值和标准差。
- 在张量的最前面添加一个批次维度,最终输出格式为 (1, C, H, W)。
后处理函数 postprocess
则执行相反的操作:
- 移除批次维度。
- 对标准化的张量进行反标准化,恢复其原始的像素值范围。
- 将像素值裁剪到 [0, 1] 之间,以确保可以正确显示。
- 将张量转换回 PIL 图像格式。
# 图像预处理和后处理函数import torch
import torchvision# ImageNet 数据集的 RGB 通道均值
# 维度: [3] - 分别对应 R、G、B 三个通道
rgb_mean = torch.tensor([0.485, 0.456, 0.406])# ImageNet 数据集的 RGB 通道标准差
# 维度: [3] - 分别对应 R、G、B 三个通道
rgb_std = torch.tensor([0.229, 0.224, 0.225])def preprocess(img, image_shape):"""预处理函数:将 PIL 图像转换为标准化的张量参数:- img: PIL Image 对象,维度为 (H, W, C)- image_shape: 目标图像尺寸,元组格式 (H, W)返回:- 处理后的张量,维度为 [1, C, H, W]其中:1 是批次维度,C=3(RGB通道),H 是高度,W 是宽度"""# 定义图像变换流水线transforms = torchvision.transforms.Compose([# 1. 调整图像大小到指定尺寸# 输入: PIL Image (H, W, C)# 输出: PIL Image (image_shape[0], image_shape[1], C)torchvision.transforms.Resize(image_shape),# 2. 将 PIL 图像转换为张量# 输入: PIL Image (H, W, C),像素值范围 [0, 255]# 输出: torch.Tensor [C, H, W],像素值范围 [0, 1]torchvision.transforms.ToTensor(),# 3. 标准化:(x - mean) / std# 输入: torch.Tensor [C, H, W]# 输出: torch.Tensor [C, H, W],标准化后的值torchvision.transforms.Normalize(mean=rgb_mean, std=rgb_std)])# 应用变换并添加批次维度# transforms(img): 维度 [C, H, W]# unsqueeze(0): 维度 [1, C, H, W]return transforms(img).unsqueeze(0)def postprocess(img):"""后处理函数:将标准化的张量转换回 PIL 图像参数:- img: 标准化的张量,维度为 [B, C, H, W],其中 B 是批次大小返回:- PIL Image 对象,维度为 (H, W, C)"""# 1. 提取第一个样本(移除批次维度)# img[0]: 维度从 [B, C, H, W] 变为 [C, H, W]img = img[0].to(rgb_std.device)# 2. 反标准化:x * std + mean# 2.1 permute(1, 2, 0): 维度从 [C, H, W] 变为 [H, W, C]# 2.2 乘以标准差并加上均值,恢复原始值范围# 2.3 torch.clamp(..., 0, 1): 将值限制在 [0, 1] 范围内# 结果维度: [H, W, C]img = torch.clamp(img.permute(1, 2, 0) * rgb_std + rgb_mean, 0, 1)# 3. 转换回 PIL 图像# 3.1 permute(2, 0, 1): 维度从 [H, W, C] 变为 [C, H, W]# 3.2 ToPILImage(): 将张量转换为 PIL Image# 输出: PIL Image 对象,维度为 (H, W, C)return torchvision.transforms.ToPILImage()(img.permute(2, 0, 1))# 使用示例:
# 预处理
pil_image = Image.open('img/05_rainier.jpg') # PIL Image (H, W, C)
print(pil_image)
tensor = preprocess(pil_image, (224, 224)) # 输出 [1, 3, 224, 224]
print(tensor.shape)
关于 torchvision.transforms.ToTensor()
的关键点总结:
- 维度转换:
- 输入:PIL Image
(H, W, C)
或 numpy array。 - 输出:PyTorch Tensor
[C, H, W]
。 - 它会自动将通道维度从最后一维移动到第一维。
- 输入:PIL Image
- 设计原因:
- PyTorch 的标准张量格式是
[B, C, H, W]
(批次、通道、高度、宽度),这是卷积神经网络期望的输入格式。 - 这种内存布局在 GPU 计算时更为高效。
- PyTorch 的标准张量格式是
- 不同图像类型处理:
- RGB图像:
(H, W, 3)
→[3, H, W]
- 灰度图像:
(H, W)
→[1, H, W]
(自动添加通道维度) - RGBA图像:
(H, W, 4)
→[4, H, W]
- RGB图像:
- 同时进行的操作:
- 数据类型转换:
uint8
→float32
- 数值范围转换:
[0, 255]
→[0, 1]
- 数据类型转换:
抽取图像特征
我们将使用基于 ImageNet 数据集预训练的 VGG-19 模型来抽取图像特征。VGG-19 是一个深度卷积神经网络,因其良好的特征提取能力而常用于风格迁移任务。
首先,我们加载预训练的 VGG-19 模型。为了方便管理模型权重文件,我们先设置了权重的下载路径。PyTorch 会自动从网络下载预训练权重(如果本地不存在的话)。
# VGG19 预训练模型加载与配置import os
import torch
import torchvision# 设置预训练模型权重的下载路径
# 注意:这必须在加载模型之前设置,否则权重会下载到默认路径
download_path = './model_weights' # 自定义权重保存路径# 确保下载目录存在,如果不存在则创建
# exist_ok=True 表示如果目录已存在不会报错
os.makedirs(download_path, exist_ok=True)# 方法1:使用 torch.hub.set_dir() 设置下载缓存目录
# 这会设置 PyTorch Hub 的默认下载目录
torch.hub.set_dir(download_path)# 方法2:通过环境变量设置
相关文章:
从代码学习深度学习 - 风格迁移 PyTorch版
文章目录 前言方法 (Methodology)阅读内容和风格图像预处理和后处理抽取图像特征定义损失函数内容损失 (Content Loss)风格损失 (Style Loss)全变分损失 (Total Variation Loss)总损失函数初始化合成图像训练模型总结前言 大家好!欢迎来到我们的深度学习代码学习系列。今天,…...
模糊综合评价模型建立
模糊综合评价模型建立 一、整体流程 二、代码实现(含大量注释) #程序文件ex14_4.py import numpy as npa np.loadtxt(data14_4.txt) # 使用定义匿名函数的形式来定义各个评价指标的隶属函数 f1 lambda x: x/8800 f2 lambda x: 1-x/8000 f3 lambda x: (x<5.5)(8-x)/(8-…...
WooCommerce短代码Shortcodes使用方法
什么是简码? 你可能以前听说过这个词,但可能认为它只是一个技术概念,一般的WordPress用户不需要了解。 或者,也许你以前也用过一两个短码,但并不完全掌握它们在更深层次上是如何工作的。 无论怎样,如果你想释放WooC…...
讯联云库项目开发日志(二)AOP参数拦截
目录 利用AOP实现参数拦截: 一、HTTP请求进入Controller(发送邮件验证码) 二、AOP切面触发 1. 切面拦截(GlobalOperactionAspect.class) method.getAnnotation() null interceptor 判断 2.参数校验注解 3. 参…...
自学嵌入式 day 18 - 数据结构 1
数据结构 相互之间存在一种或多种特定关系的数据元素的集合 1.特定关系: (1)逻辑结构: ①集合:所有在同一个集合中,关系平等。 ②线性关系:数据和数据之间是一对一的关系。(数组…...
使用WebSocket实现跨多个服务器传输音频及实时语音识别
下面我的项目信息: 项目架构: A项目(Websocket客户端 / React前端) > B项目(Websocket客户端 / Java后端)》C项目(Websocket服务端 / Node.js 后端) 项目功能: A项目…...
C++ QT图片查看器
private:QList<QString> fs;int i;void MainWindow::on_btnSlt_clicked() {QStringList files QFileDialog::getOpenFileNames(this,"选择图片",".","Images(*.png *.jpg *.bmp)");qDebug()<<files;ui->picList->clear();ui-…...
从AlphaGo到ChatGPT:AI技术如何一步步改变世界?
从AlphaGo到ChatGPT:AI技术如何一步步改变世界? 这里给大家分享一个人工智能学习网站。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 在科技发展的历史长河中,人工智能(AI)技术无疑是最为璀璨的明珠之一。从…...
跨系统数据烟囱如何破局?豪森智源HSMES重构制造协同新范式
行业困局:万亿级数据资产沉睡在孤岛中 IDC最新报告显示,中国86%的制造企业存在5套以上独立信息系统,设备联网率不足42%的工厂每年因数据断点损失超千万利润。某新能源龙头企业CTO坦言:"ERP、MES、WMS系统各自为政&#…...
MySQL DBA数据运维管理经验分享:新手入门快速提升效率的新工具与技巧
MySQL DBA数据运维管理经验分享:新手入门快速提升效率的新工具与技巧 前言 作为一名数据库管理员(DBA),MySQL的运维管理是我们日常工作的核心。随着技术的不断发展,MySQL运维工具和最佳实践也在不断演进。本文将分享一些实用的MySQL DBA运维经验,并对比分析当前流行的运维…...
通义千问-langchain使用构建(二)
目录 序言xinference应用构建构建过程简单概述成效 chatchat应用构建过程成效 总结 序言 在昨天的使用langchain的基础上。又尝试了构建智能问答应用。 使用langchain chatchat这个开源包,构建了一下智能问答系统。 前置项,是使用了一下xinference框架&…...
无人机动力系统全解析:核心组件、工作原理与实用指南
无人机想要实现稳定飞行与灵活操控,离不开一套高效协同的动力系统。该系统以电机、电子调速器(电调)、电池和螺旋桨四大核心组件为基础,各部分精密配合,共同驱动无人机翱翔蓝天。接下来,本文将从基础原理入…...
【系统架构师】2025论文《WEB系统性能优化技术》
😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文分享【系统架构师】2025论文《系统可靠性设计》,期待与你一同探索、学习、进步,一起卷起来叭! 目录 项目介绍背景介绍系统模块技术栈性能…...
华为Watch的ECG功能技术分析
华为Watch的ECG(心电图)功能通过硬件传感器、算法优化和医疗认证的结合,实现了对心脏电活动的监测和房颤(AFib)等心律失常的预警。以下是其技术实现方案的详细解析: 1. 硬件设计:单导联ECG传感…...
2025.05.14华为机考笔试题-第二题-200分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 探险家的最佳路径 问题描述 A先生是一位探险家,他需要穿越一片危险的山地区域。这个区域可以用一个 k k k \times k...
FTP 工具 vs. 命令行 SCP/RSYNC
🔹 FTP 工具 vs. 命令行 SCP/RSYNC 对比 场景FTP/SFTP 工具(如 Cyberduck、FileZilla)命令行(scp/rsync)适用人群新手、喜欢图形化操作习惯命令行、需要自动化脚本传输少量文件✅ 拖拽即可上传下载⚠️ 需手动输入命令…...
工业HMI触摸屏技术方案:基于EFISH-SCB-RK3588/SAIL-RK3588的国产化替代赛扬N100/N150全场景技术解析
一、核心硬件选型与国产化替代优势 1. 算力与架构突破 异构八核CPU:采用4Cortex-A76(2.4GHz)4Cortex-A55(1.8GHz)架构,支持实时控制逻辑、高帧率UI渲染、协议解析多任务并行处理,相…...
MySQL主从复制与读写分离
一、MySQL主从复制(Replication) 1. 核心原理 主库(Master):处理写操作,并将数据变更记录到二进制日志(Binary Log, binlog)。 从库(Slave):通过…...
VMware虚拟机 安装 CentOS 7
原文链接: VMware虚拟机 安装 CentOS 7 安装准备 软件: VMware Workstation Pro 17.6.3 镜像: CentOS-7.0-1406-x86_64-DVD.iso 我打包好放这了,VMware 和 CentOS7 ,下载即可。 关于VMware Workstation Pro 17.6.3,傻瓜式安装即可。 CentO…...
.NET 8 kestrel 配置PEM,实现内网https
一、生成证书 mkcert 是一个简单的工具,用于制作本地信任的开发证书。它不需要配置。 mkcert官方仓库地址:GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names youd like. 简…...
ERP系统如何做好工厂生产管理?4种ERP先进生产管理模式分享!
现代企业先进的生产管理方式有哪些?相信很多被生产效率问题困扰、谋求转型的企业都思考过这个问题。 放在以前,工厂靠老师傅经验、主管“凭感觉”安排生产,材料、设备、交期全靠人盯。那是因为20年前市场稳定,这套办法还行得通。…...
HttpServletRequest常用功能简介-笔记
javax.servlet.http.HttpServletRequest 是 ServletRequest 接口的子接口,专用于处理 HTTP 协议相关的请求。它提供了访问请求行、请求头、请求参数以及请求属性等方法。 1.请求行(Request Line) ✅ 功能说明 请求行包含客户端发送的 HTTP …...
基于面向对象设计的C++日期推算引擎:精准高效的时间运算实现与运算重载工程化实践
前引: 在软件开发中,时间与日期的处理是基础但极具挑战性的任务。传统的手工日期运算逻辑往往面临闰年规则、月份天数动态变化、时区转换等复杂场景的容错难题,且代码冗余度高、可维护性差。本文将深入探讨如何利用C的面向对象特性与成员函数…...
记一次bug排查(.exe链接mysql失败)-每天学习一点点
哎! 从来没有接手过的项目, .exe项目, 链接服务器失败 报错:"unable to connect to any of the specified mySQL hosts" 虽然不懂c的代码, 也没法反编译.exe项目, 还是像挑战尝试一下解决这个问题. 明面看就是链接mysql失败. 但是mysql对应的服务器地址是啥呢? …...
U盘启动CentOS安装与网卡驱动修复指南
遇到CentOS安装找不到盘符如何解决 1、进入安装页面,点击e进入修改 2、找到自己的U盘,修改完成后按下"ctrlx"执行继续后续安装 vmlinuz initrdinitrd.imginst.stage2hd:LABEL... quiet 改为(具体的U盘启动需要根据实际情况进行查找…...
【物联网】基于树莓派的物联网开发【3】——最新镜像下载和烧录
使用场景 程序猫将带领大家全面了解树莓派,包括从0到1组装,散热片、外壳、风扇安装,官网最新镜像下载及烧录等一系列操作! 树莓派必备配件 1、TF卡(SD内存卡)品牌闪迪:16G以上 2、type-c充电…...
K8S Gateway API 快速开始、胎教级教程
假设有如下三个节点的 K8S 集群: k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、Gateway 是什么 背景和目的 入口(Ingress)目前已停止更新。新的功能正在集成至网关 API 中。在 Kubernetes …...
js关于number类型的计算问题
js中关于number类型的计算 因:在js中,number类型是用于表示数值的基本类型,它遵循 IEEE 754 双精度浮点数(64 位)标准。这导致在某些计算中可能出现精度问题。 例:console.log(0.1 0.2); // 0.300000000…...
GPT-4o 遇强敌?英伟达 Eagle 2.5 视觉 AI 王者登场
前言: 在人工智能领域,视觉语言模型的竞争愈发激烈。GPT-4o 一直是该领域的佼佼者,但英伟达的 Eagle 2.5 横空出世,凭借其 80 亿参数的精简架构,在长上下文多模态任务中表现出色,尤其是在视频和高分辨率图像…...
2025最新ChatGPT Plus令牌(Token)限制完全指南:每日/每月用量详解与突破方法
2025最新ChatGPT Plus令牌(Token)限制完全解析:真相、误区与突破方案 对于支付$20/月订阅费的ChatGPT Plus用户来说,"我的ChatGPT Plus每月有多少token限制?"是一个普遍关心却常被误解的问题。随着越来越多人依赖AI工作和学习&…...
二叉树深搜:在算法森林中寻找路径
专栏:算法的魔法世界 个人主页:手握风云 目录 一、搜索算法 二、回溯算法 三、例题讲解 3.1. 计算布尔二叉树的值 3.2. 求根节点到叶节点数字之和 3.3. 二叉树剪枝 3.4. 验证二叉搜索树 3.5. 二叉搜索树中第 K 小的元素 3.6. 二叉树的所有路径 …...
力扣310.最小高度树(拓扑排序,无向图),力扣.加油站力扣.矩阵置零力扣.二叉树中的最大路径和
目录 力扣310.最小高度树(拓扑排序,无向图) 力扣.加油站 力扣.矩阵置零 力扣.二叉树中的最大路径和 力扣310.最小高度树(拓扑排序,无向图) 当他是最小高度树时候,树根必定是中心节点,且中心节点一定一两个,且…...
Java并发编程:CAS操作
1. 简介 CAS 全称是 Compare-and-Swap,即比较加交换,假设我们要对内存中的某个地址进行 CAS 操作,该地址当前值是 V,我们给定预期值 A 和新值 B,如果 V A,那么就将该地址的值更新为 B 并返回 true…...
InforSuite RDS 与django结合
InforSuite RDS(关系型数据库服务)是浪潮提供的托管式数据库服务,通常支持 MySQL、PostgreSQL、SQL Server 等主流数据库。将 Django 与 InforSuite RDS 结合使用,主要涉及数据库配置、连接优化、安全策略等环节。以下是详细的整合…...
【匹配】Needleman–Wunsch
Needleman-Wunsch 文章目录 Needleman-Wunsch1. 算法介绍2. 公式及原理3. 伪代码 1. 算法介绍 背景与目标 Needleman–Wunsch 算法由 Saul B. Needleman 和 Christian D. Wunsch 于1970年提出,是用于生物序列(如蛋白质或 DNA)全局比对&#x…...
Spring Boot 拦截器:解锁5大实用场景
一、Spring Boot中拦截器是什么 在Spring Boot中,拦截器(Interceptor)是一种基于AOP(面向切面编程)思想的组件,用于在请求处理前后插入自定义逻辑,实现权限校验、日志记录、性能监控等非业务功能…...
DVWA靶场通关笔记-SQL注入(SQL Injection Medium级别)
目录 一、SQL Injection 二、代码审计(Medium级别) 1、源码分析 (1)index.php (2)Medium.php 2、渗透思路 (1)SQL安全问题分析 (2)SQL渗透思路 三、…...
西瓜书【机器学习(周志华)】目录
第一部分:基础概念 机器学习概述 1.1 人工智能与机器学习1.2 机器学习分类1.3 机器学习应用1.4 机器学习常用术语解释 模型的评估与选择 2.1 经验误差与过拟合2.2 评估方法2.3 性能度量2.4 偏差与方差 第二部分:核心算法 线性模型 3.1 什么是回归3.2 …...
【漫话机器学习系列】260.在前向神经网络中初始权重(Initializing Weights In Feedforward Neural Networks)
前向神经网络中的权重初始化策略详解 在神经网络模型中,“初始化”常常被认为只是模型训练前的一个小步骤,但它却可能决定了整个网络能否高效收敛,是否会出现梯度爆炸或消失的问题。今天,我们通过一张生动的手绘图,来…...
每日Prompt:磨砂玻璃后的虚实对比剪影
提示词 一张黑白照片,展示了一个[主体]在磨砂或半透明表面后的模糊剪影。其[部分]轮廓清晰,紧贴表面,与其余朦胧、模糊的身影形成鲜明对比。背景是柔和的灰色渐变色调,增强了神秘和艺术的氛围。...
2025年长三角+山东省赛+ 认证杯二阶段资料助攻说明
长三角高校数模B题 完整论文代码已经在售后群 网盘链接 发布 长三角更新时间轴 5.15 23:00 B站发布 完整论文讲解视频 5.16 18:00 j降重说明 5.17 22:00 无水印版本可视化无水印代码 其余时间 写手老师 售后群在线答疑 山东省助攻C道 认证杯二阶段助攻C题 山东省认证杯…...
课程11. 计算机视觉、自编码器和生成对抗网络 (GAN)
计算机视觉、自编码器和生成对抗网络(GAN) 自动编码器Vanilla自动编码器使用 AE 生成新对象. 变分 AE (VAE)AE 条件 GAN理论示例下载并准备数据GAN模型 额外知识 课程计划: 自动编码器: 自动编码器结构;使用自动编码器…...
机器学习第十二讲:特征选择 → 选最重要的考试科目做录取判断
机器学习第十二讲:特征选择 → 选最重要的考试科目做录取判断 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 一、学…...
Typescript学习教程,从入门到精通, TypeScript编程基础语法知识点及案例代码(3)
TypeScript编程基础语法知识点及案例代码 本文将详细介绍TypeScript编程的基础知识,包括注释、标识符、关键字、基础类型、变量、常量以及操作符。 1. 注释 语法知识点 TypeScript 支持三种类型的注释: 单行注释:使用 // 开始࿰…...
云原生数据库排障新挑战:AI驱动与分布式架构深度解析
云原生数据库排障新挑战:AI驱动与分布式架构深度解析 一、问题描述与快速解决方案 1. 2025年数据库故障新特征 随着云原生与AI技术的深度耦合,数据库故障呈现三大新特征: AI模型推理性能瓶颈:向量化查询响应时间突增࿰…...
用MCP往ppt文件里插入系统架构图
文章目录 一、技术架构解析1. Markdown解析模块(markdown_to_hierarchy)2. 动态布局引擎(give_hierarchy_positions)3. PPTX生成模块(generate_pptx)二、核心技术亮点1. 自适应布局算法2. MCP服务集成三、工程实践建议1. 性能优化方向2. 样式扩展方案3. 部署实践四、应用…...
ABC301——ABCD
A 统计比赛胜场 #include<bits/stdc.h> using namespace std;#define x first #define y secondtypedef long long LL; typedef pair<int, int> PII;const int N 2e5 10;int t, n, m, a[N]; string s;void solve() {cin >> n;int c1 0, c2 0;cin >…...
Rust 数据结构:Vector
Rust 数据结构:Vector Rust 数据结构:Vector创建数组更新数组插入元素删除元素 获取数组中的元素迭代数组中的值使用枚举存储多个类型删除一个数组会删除它的元素 Rust 数据结构:Vector vector 来自标准库,在内存中连续存储相同类…...
GpuGeek:为创新者提供灵活、快速、高效的云计算服务!
目录 一、前言 二、GpuGeek平台的显著优势 2.1 显卡资源充足:强大计算能力的基础 (1)多种GPU配置选择 (2)弹性扩展与资源管理 2.2 节点丰富:满足多种计算需求 (1)各种节点配置…...
国产化Word处理控件Spire.Doc教程:通过C# 删除 Word 文档中的超链接
Word 文档中的超链接是可点击的链接,允许读者导航到一个网站或另一个文档。虽然超链接可以提供有价值的补充信息,但有时也会分散注意力或造成不必要的困扰,因此可能会需要删除这些超链接。本文将介绍如何使用 Spire.Doc for .NET 通过 C# 删除…...