当前位置: 首页 > news >正文

做家旅游的视频网站好wordpress读书插件

做家旅游的视频网站好,wordpress读书插件,男女做污的事情网站视频,广州建设网站首页cross_entropy计算误差方式#xff0c;输入向量z为[1,2,3]#xff0c;预测y为[1]#xff0c;选择数为2#xff0c;计算出一大坨e的式子为3.405#xff0c;再用-23.405计算得到1.405MSE计算误差方式#xff0c;输入z为[1,2,3]#xff0c;预测向量应该是[1,0,0]#xff0…cross_entropy计算误差方式输入向量z为[1,2,3]预测y为[1]选择数为2计算出一大坨e的式子为3.405再用-23.405计算得到1.405MSE计算误差方式输入z为[1,2,3]预测向量应该是[1,0,0]和输入向量维度相同 将cross_entropy直接替换成mse_loss报错RuntimeError: The size of tensor a (7) must match the size of tensor b (140) at non-singleton dimension 1 将 cross_entropy 换成 mse_loss 会报错的原因是这两个损失函数的输入和输出形状要求不同。cross_entropy 是一个分类损失函数它期望输入是未归一化的logits形状为 [batch_size, num_classes]而标签是整数类别形状为 [batch_size]。mse_loss 是一个回归损失函数它期望输入和标签的形状相同。 如果你想使用 mse_loss 来替代 cross_entropy你需要对标签进行one-hot编码使它们与模型的输出形状匹配。下面是如何修改代码以使用 mse_loss 的示例 修改代码以使用 mse_loss 加载必要的库 你需要一个工具来将标签转换为one-hot编码。这里我们使用 torch.nn.functional.one_hot。 修改训练函数 在训练函数中将标签转换为one-hot编码然后计算 mse_loss。 核心测试代码讲解 outmodel(data)模型输出形状为torch.Size([140, 7]) data.y中测试数据输出形状为torch.Size([140])打印第一个数据为37个类别中的第4个类别 将3转化为7位置独热码计算MSE对应train_labels_one_hot第一个数据[0., 0., 0., 1., 0., 0., 0.]为4 out形状为torch.Size([140, 7])train_labels_one_hot的形状为[140, 7] torch.Size([140, 7]) torch.Size([140]) tensor([-0.0166, 0.0191, -0.0036, -0.0053, -0.0160, 0.0071, -0.0042],devicecuda:0, grad_fnSelectBackward0) tensor(3, devicecuda:0) tensor([[0., 0., 0., 1., 0., 0., 0.],...[0., 1., 0., 0., 0., 0., 0.]], devicecuda:0) train_labels_one_hot shape torch.Size([140, 7]) test out torch.Size([2708, 7])train_labels_one_hot F.one_hot(data.y[data.train_mask], num_classesdataset.num_classes).float() print(out[data.train_mask].shape, data.y[data.train_mask].shape) print(out[data.train_mask][0], data.y[data.train_mask][0]) print(train_labels_one_hot) print(ftrain_labels_one_hot shape {train_labels_one_hot.shape}) loss F.mse_loss(out[data.train_mask], train_labels_one_hot)解释 加载库我们使用 torch.nn.functional.one_hot 将标签转换为one-hot编码。修改训练函数 将标签 train_labels 转换为one-hot编码train_labels_one_hot F.one_hot(train_labels, num_classesdataset.num_classes).float()。使用 mse_loss 计算均方误差损失 loss F.mse_loss(train_out, train_labels_one_hot)。 保持评估函数不变评估函数仍然使用 argmax 提取预测类别并计算准确性。 魔改完整代码 import torch import torch.nn.functional as F from torch_geometric.nn import GCNConv from torch_geometric.datasets import Planetoid from torch_geometric.transforms import NormalizeFeatures# 加载Cora数据集 dataset Planetoid(root/tmp/Cora, nameCora, transformNormalizeFeatures()) data dataset[0]# 定义GCN模型 class GCN(torch.nn.Module):def __init__(self):super(GCN, self).__init__()self.conv1 GCNConv(dataset.num_node_features, 16)self.conv2 GCNConv(16, dataset.num_classes)def forward(self, data):x, edge_index data.x, data.edge_indexx self.conv1(x, edge_index)x F.relu(x)x F.dropout(x, trainingself.training)x self.conv2(x, edge_index)return x# return F.log_softmax(x, dim1)# 初始化模型和优化器 model GCN() print(model) optimizer torch.optim.Adam(model.parameters(), lr0.01, weight_decay5e-4) data data.to(cuda) model model.to(cuda)# 打印归一化后的特征 print(data.x[0])print(fdata.train_mask{data.train_mask})# 训练模型 def train():model.train()optimizer.zero_grad()out model(data)# print(fout[data.train_mask] {data.train_mask.shape} {out[data.train_mask].shape} {out[data.train_mask]})# loss F.nll_loss(out[data.train_mask], data.y[data.train_mask])train_labels_one_hot F.one_hot(data.y[data.train_mask], num_classesdataset.num_classes).float()print(out[data.train_mask].shape, data.y[data.train_mask].shape)print(out[data.train_mask][0], data.y[data.train_mask][0])print(train_labels_one_hot)print(ftrain_labels_one_hot shape {train_labels_one_hot.shape})loss F.mse_loss(out[data.train_mask], train_labels_one_hot)loss.backward()optimizer.step()return loss.item()# 评估模型 def test():model.eval()out model(data)print(ftest out {out.shape})print(ftest out[0] {out[0].shape} {out[0]})print(ftest out[0:1,:] {out[0:1,:].shape} {out[0:1,:]})print(ftest out[0:1,:].argmax(dim1) {out[0:1,:].argmax(dim1)})pred out.argmax(dim1)print(ftest pred {pred[data.test_mask].shape} {pred[data.test_mask]})print(fdata {data.y[data.test_mask].shape} {data.y[data.test_mask]})correct (pred[data.test_mask] data.y[data.test_mask]).sum()acc int(correct) / int(data.test_mask.sum())return accfor epoch in range(1):loss train()acc test()print(fEpoch {epoch1}, Loss: {loss:.4f}, Accuracy: {acc:.4f})原始代码 import torch import torch.nn.functional as F from torch_geometric.nn import GCNConv from torch_geometric.datasets import Planetoid from torch_geometric.transforms import NormalizeFeatures# 加载Cora数据集并应用NormalizeFeatures变换 dataset Planetoid(root/tmp/Cora, nameCora, transformNormalizeFeatures()) data dataset[0]# 计算训练、验证和测试集的大小 num_train data.train_mask.sum().item() num_val data.val_mask.sum().item() num_test data.test_mask.sum().item()print(fNumber of training nodes: {num_train}) print(fNumber of validation nodes: {num_val}) print(fNumber of test nodes: {num_test})# 定义GCN模型 class GCN(torch.nn.Module):def __init__(self):super(GCN, self).__init__()self.conv1 GCNConv(dataset.num_node_features, 16)self.conv2 GCNConv(16, dataset.num_classes)def forward(self, data):x, edge_index data.x, data.edge_indexx self.conv1(x, edge_index)x F.relu(x)x F.dropout(x, trainingself.training)x self.conv2(x, edge_index)return x # 返回未归一化的logits# 初始化模型和优化器 model GCN() optimizer torch.optim.Adam(model.parameters(), lr0.01, weight_decay5e-4) data data.to(cuda) model model.to(cuda)# 训练模型 def train():model.train()optimizer.zero_grad()out model(data) # out 的形状是 [num_nodes, num_classes]train_out out[data.train_mask] # 选择训练集节点的输出train_labels data.y[data.train_mask] # 选择训练集节点的标签# 将标签转换为one-hot编码train_labels_one_hot F.one_hot(train_labels, num_classesdataset.num_classes).float()# 计算均方误差损失loss F.mse_loss(train_out, train_labels_one_hot)loss.backward()optimizer.step()return loss.item()# 评估模型 def test():model.eval()out model(data)pred out.argmax(dim1) # 提取预测类别correct (pred[data.test_mask] data.y[data.test_mask]).sum()acc int(correct) / int(data.test_mask.sum())return accfor epoch in range(200):loss train()acc test()print(fEpoch {epoch1}, Loss: {loss:.4f}, Accuracy: {acc:.4f})通过这些修改你可以将交叉熵损失函数替换为均方误差损失函数并确保输入和标签的形状匹配从而避免报错。 简单版本的的答案 Cross Entropy vs. MSE Loss Cross Entropy Loss: 输入模型的logits形状为 ([N, C])其中 (N) 是批次大小(C) 是类别数量。目标目标类别的索引形状为 ([N])。 MSE Loss: 输入模型的预测值形状为 ([N, C])。目标实际值形状为 ([N, C])通常是 one-hot 编码。 要将 cross_entropy 换成 mse_loss需要确保输入和目标的形状匹配。具体来说你需要将目标类别索引转换为 one-hot 编码。 示例代码 假设你有一个分类任务其中模型输出的是 logits目标是类别索引。我们将这个设置转换为使用 MSE Loss。 import torch import torch.nn.functional as F# 假设有一个批次的模型输出和目标标签 logits torch.tensor([[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]], requires_gradTrue) # 模型输出 target torch.tensor([0, 2]) # 目标类别# 使用 cross_entropy cross_entropy_loss F.cross_entropy(logits, target) print(Cross-Entropy Loss:) print(cross_entropy_loss)# 转换目标类别为 one-hot 编码 target_one_hot F.one_hot(target, num_classeslogits.size(1)).float() print(One-Hot Encoded Targets:) print(target_one_hot)# 计算 MSE Loss mse_loss F.mse_loss(F.softmax(logits, dim1), target_one_hot) print(MSE Loss:) print(mse_loss)输出 Cross-Entropy Loss: tensor(1.4076, grad_fnNllLossBackward) One-Hot Encoded Targets: tensor([[1., 0., 0.],[0., 0., 1.]]) MSE Loss: tensor(0.2181, grad_fnMseLossBackward)解释 logits: 模型的原始输出形状为 ([N, C])。target: 原始目标类别索引形状为 ([N])。target_one_hot: 将目标类别索引转换为 one-hot 编码形状为 ([N, C])。F.mse_loss: 使用 F.softmax(logits, dim1) 计算模型的概率分布然后与 target_one_hot 计算 MSE 损失。 通过将目标类别转换为 one-hot 编码并确保输入和目标的形状匹配可以成功地将 cross_entropy 换成 mse_loss。
http://www.dnsts.com.cn/news/147391.html

相关文章:

  • 网站建设免费模板wordpress目录遍历漏洞
  • joomla! 1.5 网站建设基础教程河间网站建设推广
  • 机械厂做网站到底有没有效果重庆建工第二建设有限公司网站
  • 西安房产网站制作公司安徽黄山网站建设
  • 重庆企业网站定制优就业seo课程学多久
  • 看那种片哪个网站好用google ajax wordpress
  • 北京国都建设集团网站商标注册代理
  • 泰安网站建设报价著名的个人网站
  • 做家居网站微信推广方案
  • 网站建设html5模板Wordpress 自用主题 免费 分享
  • 网站自主建站韩国美容网站模板
  • 长春网站建设v1手机装修设计软件
  • 百度网站ip地址漯河网站建设zrgu
  • 深圳横岗做网站网站建设合同副本
  • 没有影视许可怎么用国内空间做网站软件定制开发网站建设
  • 网站建设免费域名旅行社服务网点能否做网站
  • 湖北外贸网站建设费用企业解决方案是什么
  • 美食网站要怎么做wordpress主题开发教程
  • 公司核准名称网站千库网素材免费下载
  • 北京市网站公司wordpress 返回上一页
  • 铜仁市城乡住房与建设局网站j2ee网站开发实例
  • 网站怎样做注册窗口邯郸做网站费用
  • 现在公司做各网站要多少钱网站备案 和 icp
  • 奥运网站模板建筑公司二级资质要求
  • 如何建立英文网站推销广告
  • 网站访问速度跟服务器cpu和内存和带宽哪个重要h5自适应网站源码
  • 企业网站建设板块友情链接检索数据分析
  • 找人做一个网站要多少钱海南景区网站建设方案
  • 手机移动端网站做多大做类似返利网的网站
  • 呼市网站设计公司贝锐域名注册