mxnet教程1

本文详细介绍并演示了MXNet中数据迭代器的使用方法,包括从内存、CSV文件读取数据,以及如何创建和使用自定义迭代器进行模型训练。通过具体示例,展示了数据迭代器在不同场景下的应用。
import mxnet as mx
#%matplotlib inline
import os
import subprocess
import numpy as np
import matplotlib.pyplot as plt
import tarfile

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

# 从内存中读取数据
def test1():
    data = np.random.rand(100,3)
    label = np.random.randint(0, 10, (100,))
    print(data.shape)
    print(label.shape)
    data_iter = mx.io.NDArrayIter(data=data, label=label, batch_size=30)
    for batch in data_iter:
        #print([batch.data, batch.label, batch.pad])
        print(type(batch))
        print(batch)
        #input()
        #print(batch.data.shape)
        #print(batch.label.shape)
        print(batch.pad)
        print()
    
#从CSV文件中读取数据    
def test2():
    #lets save `data` into a csv file first and try reading it back
    data = np.random.rand(100,3)
    label = np.random.randint(0, 10, (100,))
    np.savetxt('data.csv', data, delimiter=',')
    np.savetxt('label.csv', label, delimiter=',')
    
    data_iter = mx.io.CSVIter(data_csv='data.csv', data_shape=(3,), batch_size=30)
    for batch in data_iter:
        #print([batch.data, batch.pad])
        print(batch.data)
        print(batch.pad)
            
        
#创建一个简单的迭代器:
class SimpleIter(mx.io.DataIter):
    def __init__(self, data_names, data_shapes, data_gen,
                 label_names, label_shapes, label_gen, num_batches=10):
        self._provide_data = zip(data_names, data_shapes)
        self._provide_label = zip(label_names, label_shapes)
        self.num_batches = num_batches
        self.data_gen = data_gen
        self.label_gen = label_gen
        self.cur_batch = 0

    def __iter__(self):
        return self

    def reset(self):
        self.cur_batch = 0

    def __next__(self):
        return self.next()

    @property
    def provide_data(self):
        return self._provide_data

    @property
    def provide_label(self):
        return self._provide_label

    def next(self):
        if self.cur_batch < self.num_batches:
            self.cur_batch += 1
            data = [mx.nd.array(g(d[1])) for d,g in zip(self._provide_data, self.data_gen)]
            label = [mx.nd.array(g(d[1])) for d,g in zip(self._provide_label, self.label_gen)]
            return mx.io.DataBatch(data, label)
        else:
            raise StopIteration
        
# 自定义迭代器
def test3():
    num_classes = 10
    net = mx.sym.Variable('data')
    net = mx.sym.FullyConnected(data=net, name='fc1', num_hidden=64)
    net = mx.sym.Activation(data=net, name='relu1', act_type="relu")
    net = mx.sym.FullyConnected(data=net, name='fc2', num_hidden=num_classes)
    net = mx.sym.SoftmaxOutput(data=net, name='softmax')
    print(net.list_arguments())
    print(net.list_outputs())
    
    import logging
    logging.basicConfig(level=logging.INFO)
    
    n = 32
    data_iter = SimpleIter(['data'], [(n, 100)],
                      [lambda s: np.random.uniform(-1, 1, s)],
                      ['softmax_label'], [(n,)],
                      [lambda s: np.random.randint(0, num_classes, s)])
    
    #mod = mx.mod.Module(symbol=net, context=mx.gpu(), label_names=None)
    mod = mx.mod.Module(symbol=net, 
                        context=mx.gpu(0),
                        data_names=['data'],
                        label_names=['softmax_label'])
    mod.fit(data_iter, num_epoch=5)
    
  
def test4():
    a = [1,2,3]
    b = [4, 5, 6]
    c = [4,5,6,7,8]
    zip_ab = zip(a, b)
    zip_ac = zip(a, c)
    #print("len(zip_ab):", len(zip_ab))
    #print("len(zip_ac):", len(zip_ac))
    print(zip_ab)
    print(zip_ac)
    for element in zip_ab:
        print(element)
    for element in zip_ac:
        print(element)    
        
    unzip_ac = zip(*zip_ac)
    print(unzip_ac)
    for element in unzip_ac:
        print(element)    
      
#test1()        
#test2()        
test3()        
#test4()        

 

内容概要:本文提出了一种基于融合鱼鹰算法和柯西变异的改进麻雀优化算法(OCSSA),用于优化变分模态分解(VMD)的参数,进而结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)构建OCSSA-VMD-CNN-BILSTM模型,实现对轴承故障的高【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)精度诊断。研究采用西储大学公开的轴承故障数据集进行实验验证,通过优化VMD的模态数和惩罚因子,有效提升了信号分解的准确性与稳定性,随后利用CNN提取故障特征,BiLSTM捕捉时间序列的深层依赖关系,最终实现故障类型的智能识别。该方法在提升故障诊断精度与鲁棒性方面表现出优越性能。; 适合人群:具备一定信号处理、机器学习基础,从事机械故障诊断、智能运维、工业大数据分析等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决传统VMD参数依赖人工经验选取的问题,实现参数自适应优化;②提升复杂工况下滚动轴承早期故障的识别准确率;③为智能制造与预测性维护提供可靠的技术支持。; 阅读建议:建议读者结合Matlab代码实现过程,深入理解OCSSA优化机制、VMD信号分解流程以及CNN-BiLSTM网络架构的设计逻辑,重点关注参数优化与故障分类的联动关系,并可通过更换数据集进一步验证模型泛化能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值