基于华为云ModelArts进行鸢尾花分类实验 | 【玩转华为云】
【摘要】 本实验将使用MindSpore深度学习框架,使用鸢尾花数据集,搭建简单的全连接神经网络,完成鸢尾花种类分类任务。
鸢尾花分类实验
1实验介绍
本实验将使用MindSpore深度学习框架,使用鸢尾花数据集,搭建简单的全连接神经网络,完成鸢尾花种类分类任务。
鸢尾属约有300个品种,本实验将对下列3个品种进行分类:setosa、versicolor、virginica。数据集包含4个特征:sepal_length、sepal_width、petal_length、petal_width
如图所示,标签中0代表setosa、1代表versicolor、2代表virginica
2实验过程
- 读取数据集,数据预处理
- fromnumpy import genfromtxt
- # 读取数据集
- iris_data = genfromtxt('iris.csv', delimiter=',')
- iris_data = iris_data[1:] # 移除第一行
- X = iris_data[:,:4].astype(np.float32) # 特征
- y = iris_data[:,-1].astype(np.int32) # 标签
- # 数据归一化
- X /= np.max(np.abs(X),axis=0)
- # 划分数据集
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=2, random_state=42)
- 转换数据格式
- # 训练集
- train_data = (X_train, y_train)
- train_data = ds.NumpySlicesDataset(train_data)
- # 测试集
- test_data = (X_test, y_test)
- test_data = ds.NumpySlicesDataset(test_data)
- # 批处理
- train_data = train_data.batch(32)
- test_data = test_data.batch(32)
- 定义网络
- # 包含输入层、1个隐藏层和输出层,激活函数选择ReLu
- classmy_net(nn.Cell):
- # 定义算子
- def __init__(self):
- super(my_net, self).__init__()
- fc1 = nn.Dense(4, 10) # 全连接层
- fc2 = nn.Dense(10, 3) # 全连接层
- relu = nn.ReLU() # 激活函数
- # 建构网络
- def construct(self, x):
- x = self.fc1(x)
- x = self.relu(x)
- x = self.fc2(x)
- return x
- 模型训练与评估
- # 网络
- net = my_net()
- # 损失函数
- net_loss = SoftmaxCrossEntropyWithLogits(sparse=True)
- # sparse,输出不是one hot编码时设为Ture
- # 优化器
- lr = 01# 学习率
- momentum = 9# 动量
- net_opt = nn.Momentum(net.trainable_params(), lr, momentum)
- # 模型
- model = Model(net, net_loss, net_opt, metrics={"accuracy": Accuracy()})
- # 训练
- train(10, train_data)
- # 评估
- eval(test_data)
图 4
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)