建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

再改一遍

发帖: 16粉丝: 0

发消息 + 关注

更新于2021年04月27日 15:09:25 103 4
直达本楼层的链接
楼主
显示全部楼层
[问题求助] 【MindSpore框架】训练过程无法打印的原因?

starting Training之后的每一步训练过程的打印是如何实现的呢?为什么我自己的脚本关键部分和MindSpore提供的新手教程脚本差不多,可是我这里却无法打印出来每一步的过程呢?

以下是我的代码:

以下是新手教程中提供的代码:

def train_net(network_model, epoch_size, data_path, repeat_size, ckpoint_cb, sink_mode):
    """Define the training method."""
    print("============== Starting Training ==============")
    # load training dataset
    ds_train = create_dataset(os.path.join(data_path, "train"), 32, repeat_size)
    network_model.train(epoch_size, ds_train, callbacks=[ckpoint_cb, LossMonitor(125)], dataset_sink_mode=sink_mode)


def test_net(network, network_model, data_path):
    """Define the evaluation method."""
    print("============== Starting Testing ==============")
    # load the saved model for evaluation
    param_dict = load_checkpoint("checkpoint_lenet-1_1875.ckpt")
    # load parameter to the network
    load_param_into_net(network, param_dict)
    # load testing dataset
    ds_eval = create_dataset(os.path.join(data_path, "test"))
    acc = network_model.eval(ds_eval, dataset_sink_mode=False)
    print("============== Accuracy:{} ==============".format(acc))


if __name__ == "__main__":
    context.set_context(mode=context.GRAPH_MODE, device_target='GPU')
    dataset_sink_mode = False
    # download mnist dataset
    #download_dataset()
    # learning rate setting
    lr = 0.01
    momentum = 0.9
    dataset_size = 1
    mnist_path = '/mnt/a003/MNIST/'
    # define the loss function
    net_loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
    train_epoch = 1
    # create the network
    net = LeNet5()
    # define the optimizer
    net_opt = nn.Momentum(net.trainable_params(), lr, momentum)
    config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)
    # save the network model and parameters for subsequence fine-tuning
    ckpoint = ModelCheckpoint(prefix="checkpoint_lenet", config=config_ck)
    # group layers into an object with training and evaluation features
    model = Model(net, net_loss, net_opt, metrics={"Accuracy": Accuracy()})

    train_net(model, train_epoch, mnist_path, dataset_size, ckpoint, dataset_sink_mode)
    test_net(net, model, mnist_path)

这两个代码是差不多的,可是为什么我的脚本无法打印呢?

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

chengxiaoli

发帖: 193粉丝: 27

级别 : 版主,版块专家

发消息 + 关注

发表于2021年04月27日 16:19:41
直达本楼层的链接
沙发
显示全部楼层

用户您好,欢迎您的使用,问题已经收到,会尽快给您答复。

评论
chengxiaoli 2021-4-28 11:38 评论

用户您好,查看您的脚本,在train_net中LossMonitor(125),可能是您的数据集有点问题,导致训练不足125个batch,就没有打印,您可以将LossMonitor(125)去掉试一下

... 查看全部
再改一遍 2021-4-28 16:10 评论

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

再改一遍

发帖: 16粉丝: 0

发消息 + 关注

发表于2021年04月28日 16:12:40
直达本楼层的链接
板凳
显示全部楼层

我试了一下,发现没有任何变化,还是没有打印是为什么呢?

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

再改一遍

发帖: 16粉丝: 0

发消息 + 关注

更新于2021年04月28日 16:14:58
直达本楼层的链接
地板
显示全部楼层
def train_net(network_model, epoch_size, data_dir, repeat_size, ckpoint_cb, sink_mode):
    """Define the training method."""
    print("============== Starting Training ==============")
    # load training dataset
    ds_train = create_dataset(data_dir)
    network_model.train(epoch_size, ds_train, callbacks=[ckpoint_cb], dataset_sink_mode=sink_mode)

def test_net(network, network_model, data_dir):
    """Define the evaluation method."""
    print("============== Starting Testing ==============")
    # load the saved model for evaluation
    param_dict = load_checkpoint("/mnt/a003/hypertension_scripts/models/ckpt/checkpoint_lenet-1_10.ckpt")
    # load parameter to the network
    load_param_into_net(network, param_dict)
    # load testing dataset
    ds_eval = create_dataset(data_dir,training=False)
    acc = network_model.eval(ds_eval, dataset_sink_mode=False)
    print("============== Accuracy:{} ==============".format(acc))


if __name__ == "__main__":
    context.set_context(mode=context.GRAPH_MODE, device_target='GPU')
    model_path = "/mnt/a003/hypertension_scripts/models/ckpt/"
    dataset_sink_mode = False
    lr = 0.01
    momentum = 0.9
    dataset_size = 1
    net_loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
    train_epoch = 1
    net = LeNet5()
    net_opt = nn.Momentum(net.trainable_params(), lr, momentum)
    os.system('rm -f {0}*.ckpt {0}*.meta {0}*.pb'.format(model_path))
    config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)
    ckpoint = ModelCheckpoint(prefix="checkpoint_lenet", directory=model_path, config=config_ck)
    model = Model(net, net_loss, net_opt, metrics={"Accuracy": Accuracy()})
    image_folder_dataset_dir = '/mnt/a003/'
    train_net(model, train_epoch, image_folder_dataset_dir, dataset_size, ckpoint, dataset_sink_mode)
 

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

再改一遍

发帖: 16粉丝: 0

发消息 + 关注

发表于2021年04月30日 23:41:47
直达本楼层的链接
5#
显示全部楼层

这个问题已经找到了原因了,就是您说的LossMonitor的参数设置问题。谢谢!

评论
chengxiaoli 11 小时前 评论

谢谢您的解决分享

... 查看全部
点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

邀请回答
您可以邀请3位专家

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200