news 2026/4/8 12:02:54

【day 52】神经网络调参指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【day 52】神经网络调参指南

@浙大疏锦行

import torch import torch.nn as nn # 定义简单的线性模型(无隐藏层) # 输入2个纬度的数据,得到1个纬度的输出 class SimpleNet(nn.Module): def __init__(self): super(SimpleNet, self).__init__() # 线性层:2个输入特征,1个输出特征 self.linear = nn.Linear(2, 1) def forward(self, x): # 前向传播:y = w1*x1 + w2*x2 + b return self.linear(x) # 创建模型实例 model = SimpleNet() # 查看模型参数 print("模型参数:") for name, param in model.named_parameters(): print(f"{name}: {param.data}")
import torch import torch.nn as nn import matplotlib.pyplot as plt import numpy as np # 设置设备 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 定义极简CNN模型(仅1个卷积层+1个全连接层) class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() # 卷积层:输入3通道,输出16通道,卷积核3x3 self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1) # 池化层:2x2窗口,尺寸减半 self.pool = nn.MaxPool2d(kernel_size=2) # 全连接层:展平后连接到10个输出(对应10个类别) # 输入尺寸:16通道 × 16x16特征图 = 16×16×16=4096 self.fc = nn.Linear(16 * 16 * 16, 10) def forward(self, x): # 卷积+池化 x = self.pool(self.conv1(x)) # 输出尺寸: [batch, 16, 16, 16] # 展平 x = x.view(-1, 16 * 16 * 16) # 展平为: [batch, 4096] # 全连接 x = self.fc(x) # 输出尺寸: [batch, 10] return x # 初始化模型 model = SimpleCNN() model = model.to(device) # 查看模型结构 print(model) # 查看初始权重统计信息 def print_weight_stats(model): # 卷积层 conv_weights = model.conv1.weight.data print("\n卷积层 权重统计:") print(f" 均值: {conv_weights.mean().item():.6f}") print(f" 标准差: {conv_weights.std().item():.6f}") print(f" 理论标准差 (Kaiming): {np.sqrt(2/3):.6f}") # 输入通道数为3 # 全连接层 fc_weights = model.fc.weight.data print("\n全连接层 权重统计:") print(f" 均值: {fc_weights.mean().item():.6f}") print(f" 标准差: {fc_weights.std().item():.6f}") print(f" 理论标准差 (Kaiming): {np.sqrt(2/(16*16*16)):.6f}") # 改进的可视化权重分布函数 def visualize_weights(model, layer_name, weights, save_path=None): plt.figure(figsize=(12, 5)) # 权重直方图 plt.subplot(1, 2, 1) plt.hist(weights.cpu().numpy().flatten(), bins=50) plt.title(f'{layer_name} 权重分布') plt.xlabel('权重值') plt.ylabel('频次') # 权重热图 plt.subplot(1, 2, 2) if len(weights.shape) == 4: # 卷积层权重 [out_channels, in_channels, kernel_size, kernel_size] # 只显示第一个输入通道的前10个滤波器 w = weights[:10, 0].cpu().numpy() plt.imshow(w.reshape(-1, weights.shape[2]), cmap='viridis') else: # 全连接层权重 [out_features, in_features] # 只显示前10个神经元的权重,重塑为更合理的矩形 w = weights[:10].cpu().numpy() # 计算更合理的二维形状(尝试接近正方形) n_features = w.shape[1] side_length = int(np.sqrt(n_features)) # 如果不能完美整除,添加零填充使能重塑 if n_features % side_length != 0: new_size = (side_length + 1) * side_length w_padded = np.zeros((w.shape[0], new_size)) w_padded[:, :n_features] = w w = w_padded # 重塑并显示 plt.imshow(w.reshape(w.shape[0] * side_length, -1), cmap='viridis') plt.colorbar() plt.title(f'{layer_name} 权重热图') plt.tight_layout() if save_path: plt.savefig(f'{save_path}_{layer_name}.png') plt.show() # 打印权重统计 print_weight_stats(model) # 可视化各层权重 visualize_weights(model, "Conv1", model.conv1.weight.data, "initial_weights") visualize_weights(model, "FC", model.fc.weight.data, "initial_weights") # 可视化偏置 plt.figure(figsize=(12, 5)) # 卷积层偏置 conv_bias = model.conv1.bias.data plt.subplot(1, 2, 1) plt.bar(range(len(conv_bias)), conv_bias.cpu().numpy()) plt.title('卷积层 偏置') # 全连接层偏置 fc_bias = model.fc.bias.data plt.subplot(1, 2, 2) plt.bar(range(len(fc_bias)), fc_bias.cpu().numpy()) plt.title('全连接层 偏置') plt.tight_layout() plt.savefig('biases_initial.png') plt.show() print("\n偏置统计:") print(f"卷积层偏置 均值: {conv_bias.mean().item():.6f}") print(f"卷积层偏置 标准差: {conv_bias.std().item():.6f}") print(f"全连接层偏置 均值: {fc_bias.mean().item():.6f}") print(f"全连接层偏置 标准差: {fc_bias.std().item():.6f}")

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 15:34:16

告别文献堆砌!宏智树 AI:手把手教你写出有灵魂的文献综述

作为深耕论文写作科普的教育博主,后台每天都被粉丝的文献综述难题刷屏:“读了 30 篇文献,写出来的综述还是‘观点大乱炖’”“引用格式改到崩溃,导师说我是‘学术搬运工’”“研究空白找不到,论文创新点无从谈起”。 …

作者头像 李华
网站建设 2026/4/4 4:24:50

COMSOL氩气等离子体显示板模型(PDP)探索

[COMSOL氩气等离子体显示板模型(pdp)],与Journal of applied physics文献基本一致,有需要的可以拿去参考。嘿,大家好!今天来聊聊 COMSOL 里的氩气等离子体显示板模型(PDP…

作者头像 李华
网站建设 2026/4/4 3:15:39

当大模型成为生产力,知识付费行业如何迎接价值兑现时代?

近日,智谱AI作为全球大模型第一股在港交所上市的消息引发行业热议。这一标志性事件不仅代表着技术概念的成熟,更意味着AI正从实验室走向产业应用,从技术探索走向价值兑现。对于知识付费与在线教育行业而言,这背后隐藏着怎样的机遇…

作者头像 李华
网站建设 2026/4/4 0:36:50

当AI成为标准配置,知识服务者如何构建新竞争力?

智谱AI的上市不仅是一家企业的里程碑,更是整个AI产业从技术探索走向商业成熟的分水岭。对于知识付费与在线教育行业而言,这意味着AI技术已从“可选配件”转变为“标准配置”。在这样的背景下,教育从业者应当如何重新思考自身的核心竞争力&…

作者头像 李华