首页 Paddle框架 帖子详情
Paddle visualdl 动态模型输出报错
收藏
快速回复
Paddle框架 问答模型训练 588 2
Paddle visualdl 动态模型输出报错
收藏
快速回复
Paddle框架 问答模型训练 588 2

我们想在visualdl中输出模型结构,但一直报错,直接使用官方提供的示例也一样出错,哪位大牛能否帮忙看一下,谢谢!

## 以下代码中有写下相关注释,即时尝试一个线性回归的简单模型,也一样出错

import numpy as np

import paddle

import paddle.nn as nn

import paddle.optimizer as opt

from paddle.static import InputSpec

from visualdl import LogWriter

 

BATCH_SIZE = 16

BATCH_NUM = 4

EPOCH_NUM = 4

 

IMAGE_SIZE = 784

CLASS_NUM = 10

 

writer = LogWriter(logdir="./log/graph_test02/")

 

# define a random dataset

class RandomDataset(paddle.io.Dataset):

    def __init__(self, num_samples):

        self.num_samples = num_samples

 

    def __getitem__(self, idx):

        image = np.random.random([IMAGE_SIZE]).astype('float32')

        label = np.random.randint(0, CLASS_NUM - 1, (1, )).astype('int64')

        return image, label

 

    def __len__(self):

        return self.num_samples

 

class LinearNet(nn.Layer):

    def __init__(self):

        super(LinearNet, self).__init__()

        self._linear = nn.Linear(IMAGE_SIZE, CLASS_NUM)

 

    def forward(self, x):

        return self._linear(x)

 

def train(layer, loader, loss_fn, opt):

    for epoch_id in range(EPOCH_NUM):

        for batch_id, (image, label) in enumerate(loader()):

            out = layer(image)

            loss = loss_fn(out, label)

            loss.backward()

            opt.step()

            opt.clear_grad()

            print("Epoch {} batch {}: loss = {}".format(

                epoch_id, batch_id, np.mean(loss.numpy())))

 

# create network

layer = LinearNet()

loss_fn = nn.CrossEntropyLoss()

adam = opt.Adam(learning_rate=0.001, parameters=layer.parameters())

 

# create data loader

dataset = RandomDataset(BATCH_NUM * BATCH_SIZE)

loader = paddle.io.DataLoader(dataset,

    batch_size=BATCH_SIZE,

    shuffle=True,

    drop_last=True,

    num_workers=2)

 

# train

train(layer, loader, loss_fn, adam)

 

# save

path = "example.dy_model/linear"

paddle.jit.save(

    layer=layer,

    path=path,

    input_spec=[InputSpec(shape=[None, 784], dtype='float32')])

 

writer.add_graph(model=layer, input_spec=[paddle.static.InputSpec(shape=[None, 784], dtype='float32')], verbose=False)

writer.close()

 

##  报错同样发生在这里

writer.add_graph(model=layer, input_spec=[paddle.static.InputSpec(shape=[None, 784], dtype='float32')], verbose=False)

 

 

报错时,运行中的代码如下:
import paddle

from paddle import Tensor

import paddle.fluid as fluid

from typing import *

import numpy as np

def forward(self, x):

    return paddle.jit.dy2static.convert_call(self._linear)(x)

 

此內容为paddle运行过程中产生,此外报错并非发生在训练过程中,而是单纯发生在add_graph的方法上。

0
收藏
回复
全部评论(2)
时间顺序
K
KevinLaw
#2 回复于2022-08

补充报错截图,谢谢!

0
回复
李长安
#3 回复于2022-08

去提issue啊,让他们修

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户