# 训练项目
    dataset0 = Dataset(train_split, 'training', root, mode)
    dataloader = ds.GeneratorDataset(dataset0, column_names=['imgs', 'label'], shuffle=True)
    dataset1 = dataloader.batch(batch_size=batch_size)
    # 测试项目
    val_dataset0 = Dataset(train_split, 'testing', root, mode)
    val_dataloader = ds.GeneratorDataset(val_dataset0, column_names=['imgs', 'label'], shuffle=True)
    val_dataset1 = val_dataloader.batch(batch_size=batch_size)

    net = InceptionI3d(num_classes=400, in_channels=3, keep_prob=0.5)
    net.replace_logits(157)

    for data in dataset1.create_dict_iterator():
        x = data['imgs']
        print(x.shape)
        imgs = net(x)
        print(imgs.shape)

对于mindspore的数据迭代器,在迭代了一个batch之后,是会停止迭代并在数据进入网络并输出后再进行迭代的吗?还是一边迭代一边输入数据给网络?

由于网络比较大,我在用迭代器测试的时候,发现迭代器在送入一个batch后,并没有停止迭代而是继续迭代。第一个batch经过网络的输出在多次迭代后才显示输出 

请问这是正常的吗?

数据迭代是串行的,输出一个数据,在输入给网络。

建议将print函数的flus参数设置为True试下。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐