硬件环境**: 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).
硬件环境**: 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).