网络结构受到生物神经元(脑细胞)简化模型的启发。训练神经网络以通过有监督和无监督技术“学习”,并且可以用于解决优化问题,近似问题,分类模式及其组合。
我尝试建立一个用于中文多标签文本分类任务的模型,但该模型的性能不够好(大约60%的准确率),我来寻求帮助以了解如何增强它。 我
我正在使用这个示例探索修剪神经网络。我的修剪代码使用预先训练的模型,如下所示: prune_low_magnitude = tfmot.sparsity.keras.prune_low_magnitude # 计算结束...
我想了解当GPU执行神经网络时,操作如何映射到GPU的硬件资源。我熟悉 GPU(尤其是 NVIDIA)的架构,并且我...
我尝试建立一个用于中文多标签文本分类任务的模型,但该模型的性能不够好(大约60%的准确率),我来寻求帮助以了解如何增强它。 我
我正在 Chestxray 数据集上训练 ResNet50。我的训练数据约为 15000 个样本,1500 个用于验证,3000 个用于测试。这是多标签分类问题,我有 13 个标签,我有......
下面是我正在尝试编写的神经网络的 Matlab 代码的一部分。这是我第一次尝试与机器学习相关的事情。我在这里关注迈克尔·尼尔森的书:http://
即使遵循示例 3:分类的文档代码,PyKan 代码也无法工作
我完全按照 PyKan 文档上的代码进行操作,但是它一直给我这个错误: 描述:0%| | 0/20 [00:00 我完全按照 PyKan 文档上的代码进行操作,但是它一直给我这个错误: description: 0%| | 0/20 [00:00<?, ?it/s] --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) Cell In[44], line 9 6 def test_acc(): 7 return torch.mean((torch.argmax(model(dataset['test_input']), dim=1) == dataset['test_label']).float()) ----> 9 results = model.train(dataset, opt="LBFGS", steps=20, metrics=(train_acc, test_acc), loss_fn=torch.nn.CrossEntropyLoss()) File ~\anaconda3\Lib\site-packages\kan\KAN.py:898, in KAN.train(self, dataset, opt, steps, log, lamb, lamb_l1, lamb_entropy, lamb_coef, lamb_coefdiff, update_grid, grid_update_num, loss_fn, lr, stop_grid_update_step, batch, small_mag_threshold, small_reg_factor, metrics, sglr_avoid, save_fig, in_vars, out_vars, beta, save_fig_freq, img_folder, device) 895 test_id = np.random.choice(dataset['test_input'].shape[0], batch_size_test, replace=False) 897 if _ % grid_update_freq == 0 and _ < stop_grid_update_step and update_grid: --> 898 self.update_grid_from_samples(dataset['train_input'][train_id].to(device)) 900 if opt == "LBFGS": 901 optimizer.step(closure) File ~\anaconda3\Lib\site-packages\kan\KAN.py:243, in KAN.update_grid_from_samples(self, x) 220 ''' 221 update grid from samples 222 (...) 240 tensor([0.0128, 1.0064, 2.0000, 2.9937, 3.9873, 4.9809]) 241 ''' 242 for l in range(self.depth): --> 243 self.forward(x) 244 self.act_fun[l].update_grid_from_samples(self.acts[l]) File ~\anaconda3\Lib\site-packages\kan\KAN.py:311, in KAN.forward(self, x) 307 self.acts.append(x) # acts shape: (batch, width[l]) 309 for l in range(self.depth): --> 311 x_numerical, preacts, postacts_numerical, postspline = self.act_fun[l](x) 313 if self.symbolic_enabled == True: 314 x_symbolic, postacts_symbolic = self.symbolic_fun[l](x) File ~\anaconda3\Lib\site-packages\torch\nn\modules\module.py:1532, in Module._wrapped_call_impl(self, *args, **kwargs) 1530 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc] 1531 else: -> 1532 return self._call_impl(*args, **kwargs) File ~\anaconda3\Lib\site-packages\torch\nn\modules\module.py:1541, in Module._call_impl(self, *args, **kwargs) 1536 # If we don't have any hooks, we want to skip the rest of the logic in 1537 # this function, and just call forward. 1538 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1539 or _global_backward_pre_hooks or _global_backward_hooks 1540 or _global_forward_hooks or _global_forward_pre_hooks): -> 1541 return forward_call(*args, **kwargs) 1543 try: 1544 result = None File ~\anaconda3\Lib\site-packages\kan\KANLayer.py:173, in KANLayer.forward(self, x) 171 preacts = x.permute(1, 0).clone().reshape(batch, self.out_dim, self.in_dim) 172 base = self.base_fun(x).permute(1, 0) # shape (batch, size) --> 173 y = coef2curve(x_eval=x, grid=self.grid[self.weight_sharing], coef=self.coef[self.weight_sharing], k=self.k, device=self.device) # shape (size, batch) 174 y = y.permute(1, 0) # shape (batch, size) 175 postspline = y.clone().reshape(batch, self.out_dim, self.in_dim) File ~\anaconda3\Lib\site-packages\kan\spline.py:100, in coef2curve(x_eval, grid, coef, k, device) 65 ''' 66 converting B-spline coefficients to B-spline curves. Evaluate x on B-spline curves (summing up B_batch results over B-spline basis). 67 (...) 96 torch.Size([5, 100]) 97 ''' 98 # x_eval: (size, batch), grid: (size, grid), coef: (size, coef) 99 # coef: (size, coef), B_batch: (size, coef, batch), summer over coef --> 100 y_eval = torch.einsum('ij,ijk->ik', coef, B_batch(x_eval, grid, k, device=device)) 101 return y_eval File ~\anaconda3\Lib\site-packages\torch\functional.py:385, in einsum(*args) 380 return einsum(equation, *_operands) 382 if len(operands) <= 2 or not opt_einsum.enabled: 383 # the path for contracting 0 or 1 time(s) is already optimized 384 # or the user has disabled using opt_einsum --> 385 return _VF.einsum(equation, operands) # type: ignore[attr-defined] 387 path = None 388 if opt_einsum.is_available(): RuntimeError: expected scalar type Double but found Float 我该如何解决这个问题? 我将代码修改为这样: from kan import KAN import matplotlib.pyplot as plt from sklearn.datasets import make_moons import torch import numpy as np device = "cuda:0" if torch.cuda.is_available() else "cpu" dataset = {} train_input, train_label = make_moons( n_samples=1000, shuffle=True, noise=0.1, random_state=None) test_input, test_label = make_moons( n_samples=1000, shuffle=True, noise=0.1, random_state=None) dataset['train_input'] = torch.from_numpy(train_input) dataset['test_input'] = torch.from_numpy(test_input) dataset['train_label'] = torch.from_numpy(train_label) dataset['test_label'] = torch.from_numpy(test_label) dataset['train_input'] = dataset['train_input'].to(device) dataset['test_input'] = dataset['train_input'].to(device) dataset['train_label'] = dataset['train_input'].to(device) dataset['test_label'] = dataset['train_input'].to(device) X = dataset['train_input'] y = dataset['train_label'] model = KAN(width=[2, 2], grid=3, k=3, device=device).double() print(model.device) print(dataset['train_input'].device) print(dataset['test_input'].device) print(dataset['train_label'].device) print(dataset['test_label'].device) def train_acc(): return torch.mean((torch.argmax(model(dataset['train_input']), dim=1) == dataset['train_label'])) def test_acc(): return torch.mean((torch.argmax(model(dataset['test_input']), dim=1) == dataset['test_label'])) results = model.train(dataset, opt="LBFGS", steps=20, metrics=( train_acc, test_acc), loss_fn=torch.nn.CrossEntropyLoss()) 但是,我不断收到此错误,我什至尝试通过手动设置设备(如上面的代码所示)来修复它,但没有任何效果。 cuda:0 cuda:0 cuda:0 cuda:0 cuda:0 description: 0%| | 0/20 [00:00<?, ?it/s] Traceback (most recent call last): File "c:\Users\kshit\OneDrive\Documents\IRIS\KANforIRIS.py", line 45, in <module> results = model.train(dataset, opt="LBFGS", steps=20, metrics=( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py", line 898, in train self.update_grid_from_samples(dataset['train_input'][train_id].to(device)) File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py", line 243, in update_grid_from_samples self.forward(x) File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py", line 311, in forward x_numerical, preacts, postacts_numerical, postspline = self.act_fun[l](x) ^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KANLayer.py", line 170, in forward x = torch.einsum('ij,k->ikj', x, torch.ones(self.out_dim, device=self.device)).reshape(batch, self.size).permute(1, 0) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kshit\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\functional.py", line 380, in einsum return _VF.einsum(equation, operands) # type: ignore[attr-defined] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! 编辑:对于最初的简短错误消息表示抱歉。为了方便起见,我现在添加了完整的错误消息,并修复了原始代码的一些小问题,因此唯一的错误是我在这篇文章中给出的错误。 我也有类似的问题。这里的仓库提供了解决方案:https://github.com/KindXiaoming/pykan/blob/master/kan/KAN.py(第761行)。您需要将“设备”传递到方法签名中。 致以诚挚的问候
AttributeError:“DataFrame”对象没有属性“concat”
我正在做一个人工神经网络项目,通过医疗保险数据集建立成本预测模型。这是代码: def FunctionFindBestParams(X_train, y_train, X_test, y_test):
我试图了解卷积神经网络中的维度如何表现。下图中,输入是具有 1 个通道的 28×28 矩阵。然后有 32 个 5×5 过滤器(步幅为 2...
当我想做反向传播时,如何解决 sigmoid 求导中的溢出问题
我正在尝试实现一个神经网络并训练它。 我知道我的前向函数(前向传播)工作正常。但我不确定我的反向传播。 问题是当我想要计算时...
我正在开发 C++ 神经网络 我有这段代码来初始化一个 4D 数组,其尺寸为: 神经元计算的每个重要值,例如线性函数和激活函数 里面...
ModuleNotFoundError:没有名为“onnxruntime”的模块
我正在学习 Microsoft PyTorch 课程并尝试在 Kaggle Notebooks 上实现,但我一遍又一遍地收到相同的错误消息:“ModuleNotFoundError:没有名为 'onnxrunti 的模块...
我试图理解反向传播背后的公式。 因此,如果我们的最后一层是 sigmoid,我们可以计算 dZ = A−Y 但如果我们在神经网络中间有一层,它的计算方式就像 dZ...
使用 Keras、sklearn 等在我的神经网络中处理具有 13 种可能输出的多标签分类问题... 每个输出可以是一个数组,如 [0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1 ,0]....
我正在开发一个项目,需要使用神经网络对非线性关系进行建模。关系为 ( y = 3x_1^2x_2^3 )。网络设置如下: 预处理:自然
我有一个模型,我想用learning_rate = 0.8 训练它几个时期,然后设置学习率= 0.4 并继续训练。 但由于学习率是在编译模型时设置的......那又怎样
我正在尝试使用类似于此处概述的方法来编写一个神经网络来乘除两个数字。首先,我编写了两个数字相加和相减的模型,以及平方......
我正在 Keras 中执行语义分割任务 - 从背景中对树进行分类。我的图像最初的形状为 (256, 256, 3)。但是,我想将它们的大小调整为 (128, 128) 以加快火车速度...
我正在尝试修改 github 上的 Ben Moseley 代码 https://github.com/benmoseley/FBPINNs。 我的目的是将一个值向量插入到取决于 x y 坐标的损失 fn 中......
使用 torch.autograd 训练的循环神经网络预测无意义
我正在尝试使用 torch.autograd 训练一个简单的循环神经网络,该网络可以预测以 ABC 表示法表示歌曲的字符序列中的下一个字符。 该模型看起来像...