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
1 系统环境
硬件环境(Ascend/GPU/CPU): CPU
操作系统:Windows11
MindSpore版本: 2.2.14
Python版本:3.8.18
执行模式(PyNative/ Graph): 不限
2 报错信息
2.1 问题描述
使用如下脚本运行出现报错RuntimeError: Exception thrown from user defined Python function in dataset.
2.2 脚本信息
创建数据集脚本
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网络模型脚本
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主函数脚本
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)])2.3 报错信息
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).3 根因分析
******此处由用户填写******
4 解决方案
******此处由用户填写******
包含文字方案和最终脚本代码