模型在ascend上报错,在cpu上正确显示了loss
收藏回复举报
模型在ascend上报错,在cpu上正确显示了loss
t('forum.solved') 已解决
发表于2024-06-09 14:18:07
0 查看

芯片为910porb,python3.7.5,ubuntu18.04

相关代码:

from mindspore import nn

from mindspore import Tensor

from mindspore.common.initializer import Normal

from mindspore.nn import Flatten, Dense, Dropout, Conv1d, BatchNorm1d, MaxPool1d

from mindspore.train import Accuracy, Model, History,LossMonitor,TimeMonitor

import numpy as np

import mindspore.dataset as ds

import matplotlib.pyplot as plt

import mindspore

mindspore.set_context('GPU')

class DAN1(nn.Cell):

def __init__(self):

super(DAN1, self).__init__()

self.conv1 = Conv1d(in_channels=2, out_channels=96, kernel_size=3, pad_mode='same')

self.bn1 = BatchNorm1d(num_features=96)

self.conv2 = Conv1d(in_channels=96, out_channels=256, kernel_size=3, pad_mode='same')

self.bn2 = BatchNorm1d(num_features=256)

self.conv3 = Conv1d(in_channels=256, out_channels=384, kernel_size=3, pad_mode='same')

self.conv4 = Conv1d(in_channels=384, out_channels=384, kernel_size=3, pad_mode='same')

self.conv5 = Conv1d(in_channels=384, out_channels=256, kernel_size=3, pad_mode='same')

self.pool = MaxPool1d(kernel_size=3, stride=2, pad_mode='same')

self.flatten = Flatten()

self.fc1 = Dense(in_channels=32768, out_channels=4096, weight_init=Normal())

self.fc2 = Dense(in_channels=4096, out_channels=4096, weight_init=Normal())

self.fc3 = Dense(in_channels=4096, out_channels=10, weight_init=Normal())

self.relu = nn.ReLU()

self.dropout = Dropout(0.5)

def construct(self, x):

x = self.relu(self.bn1(self.conv1(x)))

x = self.pool(x)

x = self.relu(self.bn2(self.conv2(x)))

x = self.pool(x)

x = self.conv3(x)

x = self.conv4(x)

x = self.conv5(x)

x = self.pool(x)

x = self.flatten(x)

x = self.relu(self.fc1(x))

x = self.dropout(x)

x = self.relu(self.fc2(x))

x = self.dropout(x)

x = self.fc3(x)

return x

if __name__ == '__main__':

dan = DAN1()

source_x_train = np.random.rand(200, 2, 1024)

source_y_train = np.random.rand(200)

source_dataset = ds.NumpySlicesDataset(data=(source_x_train, source_y_train))

train_dataset, test_dataset = source_dataset.split([0.9, 0.1], randomize=True)

train_data = train_dataset.batch(batch_size=5)

test_data = test_dataset.batch(batch_size=5)

optim = nn.SGD(dan.trainable_params(), learning_rate=0.01, momentum=0.9)

loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')

model = Model(dan, loss_fn, optim, metrics={"Accuracy": Accuracy()}, amp_level="O3")

history = History()

time_monitor = TimeMonitor()

loss_monitor = LossMonitor(1)

model.fit(1, train_data, test_data, callbacks=[history,time_monitor,loss_monitor])

报错信息为:

cke_8262.png

我要发帖子