Model.train报错
收藏回复举报
Model.train报错
t('forum.solved') 已解决
发表于2024-04-26 17:08:40
0 查看

硬件环境**: cpu 

 软件环境  

 MindSpore version :2.2.14 

Python version :3.8.18 

Window11 

1. 创建数据集 

class Mydataset(): 

    def __init__(self,types): 

        self.data,self.label = loaddata(types) 

        self.data_shape = self.data.shape 

        self.label_shape = self.label.shape 

        self.type = type(self.data) 

    def __getitem__(self, index): 

        index = int(index) 

        return self.data[index],self.label[index] 

    def __len__(self): 

        return len(self.data) 

def loaddata(type): 

    # 载入数据集 

    if(type == "train"): 

        length = 150 

        num_classes = 6 

        uav_data = [] 

        labels = [] 

 

        for i in range(num_classes): 

            data = np.load(f"./dataset_6class/UAV{i}.npy")[0:length] 

            uav_data.append(data) 

            labels.append(np.full((data.shape[0],), i, dtype=np.int32)) 

 

        # 合并所有类的数据和标签 

        uav_data = np.vstack(uav_data) 

        labels = np.concatenate(labels) 

 

        # 分实部虚部[18000,2048,2] 

        temp_data = np.zeros([length * num_classes, 2, 2048], dtype=np.float32) 

        temp_data[:, 0, :] = np.real(uav_data) 

        temp_data[:, 1, :] = np.imag(uav_data) 

 

        uav_dataset = Tensor(temp_data, dtype=mindspore.float32) 

        labels = Tensor(labels, dtype=mindspore.int32) 

        label_onehot = one_hot(labels, depth=num_classes, on_value=1.0, off_value=0.0) 

 

        return uav_dataset, label_onehot 

def read_dataset(type): 

    dataset = ds.GeneratorDataset(source=Mydataset(type),column_names=["data", "label"],shuffle=False) 

    return dataset 

 

2. 网络模型 

class CLDNN(nn.Cell): 

    def __init__(self): 

        # CNN 

        super(CLDNN,self).__init__() 

        self.model = SequentialCell( 

            Conv1d(in_channels=2, out_channels=64, kernel_size=3, stride=1, pad_mode='same'), 

            ReLU(), 

            MaxPool1d(kernel_size=2, stride=2), 

 

            Conv1d(in_channels=64, out_channels=128, kernel_size=3, stride=1, pad_mode='same'), 

            ReLU(), 

            MaxPool1d(kernel_size=2, stride=2), 

 

            Conv1d(in_channels=128, out_channels=256, kernel_size=3, stride=1, pad_mode='same'), 

            ReLU(), 

            MaxPool1d(kernel_size=2, stride=2), 

 

            Conv1d(in_channels=256, out_channels=512, kernel_size=3, stride=1, pad_mode='same'), 

            ReLU(), 

            MaxPool1d(kernel_size=2, stride=2), 

 

            Conv1d(in_channels=512, out_channels=512, kernel_size=3, stride=1, pad_mode='same'), 

            ReLU(), 

            MaxPool1d(kernel_size=2, stride=2), 

 

            # LSTM(input_size=64, hidden_size=50, num_layers=2), 

            Flatten(), 

 

            Dense(in_channels=32768, out_channels=5120), 

            ReLU(), 

            Dropout(p=0.5), 

            Dense(in_channels=5120, out_channels=1000), 

            ReLU(), 

            Dropout(p=0.5), 

            Dense(in_channels=1000, out_channels=6) 

        ) 

    def construct(self,inputs): 

        for layer in self.model: 

            print(f"第{i}层输入数据类型",type(inputs)) 

            inputs = layer(inputs) 

            print(inputs.shape) 

        output = inputs 

        return output 

3. 主函数 

learning_rate= 0.1 

Epoch = 10 

batch_size = 15 

train_dataset = read_dataset("train") 

train_dataset = train_dataset.batch(batch_size) 

network = my_models.CLDNN() 

loss = SoftmaxCrossEntropyWithLogits() 

optim = Momentum(params=network.trainable_params(), learning_rate=learning_rate, momentum=0.9) 

model = Model(network, loss_fn=loss, optimizer=optim, metrics={'accuracy'}) 

print("------训练") 

model.train(Epoch,train_dataset,callbacks=[LossMonitor(10)]) 

报错信息

Traceback (most recent call last): 

  File "D:\pycharm\UAV_recognition_mindspore\test.py", line 35, in <module> 

    model.train(Epoch,train_dataset,callbacks=[LossMonitor(10)]) 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\train\model.py", line 1080, in train 

    self._train(epoch, 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\train\model.py", line 115, in wrapper 

    func(self, *args, **kwargs) 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\train\model.py", line 628, in _train 

    self._train_process(epoch, train_dataset, list_callback, cb_params, initial_epoch, valid_infos) 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\train\model.py", line 917, in _train_process 

    for next_element in dataset_helper: 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\train\dataset_helper.py", line 645, in __next__ 

    data = self.iter.__next__() 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\dataset\engine\iterators.py", line 152, in __next__ 

    data = self._get_next() 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\dataset\engine\iterators.py", line 301, in _get_next 

    return [self._transform_md_to_output(t) for t in self._iterator.GetNextAsList()] 

RuntimeError: Exception thrown from user defined Python function in dataset.  

 

------------------------------------------------------------------ 

- Python Call Stack:  

------------------------------------------------------------------ 

Traceback (most recent call last): 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\dataset\engine\datasets_user_defined.py", line 103, in _cpp_sampler_fn 

    yield _convert_row(val) 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\dataset\engine\datasets_user_defined.py", line 173, in _convert_row 

    value.append(x.asnumpy()) 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\common\_stub_tensor.py", line 49, in fun 

    return method(*arg, **kwargs) 

  File "D:\Anaconda\conda\envs\mindspore_py38\lib\site-packages\mindspore\common\tensor.py", line 962, in asnumpy 

    return Tensor_.asnumpy(self) 

RuntimeError: The pointer[auto_grad_cell_ptr_] is null. 

 

---------------------------------------------------- 

- Framework Unexpected Exception Raised: 

---------------------------------------------------- 

This exception is caused by framework's unexpected error. Please create an issue at https://gitee.com/mindspore/mindspore/issues to get help. 

 

---------------------------------------------------- 

- C++ Call Stack: (For framework developers) 

---------------------------------------------------- 

mindspore\ccsrc\pipeline/pynative/grad/top_cell.h:122 mindspore::pynative::TopCellInfo::auto_grad_cell_ptr 

 

------------------------------------------------------------------ 

- Dataset Pipeline Error Message:  

------------------------------------------------------------------ 

[ERROR] Execute user Python code failed, check 'Python Call Stack' above. 

 

------------------------------------------------------------------ 

- C++ Call Stack: (For framework developers)  

------------------------------------------------------------------ 

mindspore\ccsrc\minddata\dataset\engine\datasetops\source\generator_op.cc(259). 

我要发帖子