首页 Paddle框架 帖子详情
paddle 2.1.1 cpu版本 win下静态图训练官网minist报错
收藏
快速回复
Paddle框架 问答模型训练 1115 4
paddle 2.1.1 cpu版本 win下静态图训练官网minist报错
收藏
快速回复
Paddle框架 问答模型训练 1115 4

版本 paddle 2.1.1  cpu版本    windows平台   官网代码静态图下训练 minist,报错

mport paddle
from paddle.vision.transforms import ToTensor
# 加载数据集
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=ToTensor())
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=ToTensor())

# 定义网络结构( 采用SubClass 组网 )
class Mnist(paddle.nn.Layer):
def __init__(self):
super(Mnist, self).__init__()
self.flatten = paddle.nn.Flatten()
self.linear_1 = paddle.nn.Linear(784, 512)
self.linear_2 = paddle.nn.Linear(512, 10)
self.relu = paddle.nn.ReLU()
self.dropout = paddle.nn.Dropout(0.2)

# 后续若不使用paddle inferece,可对 @paddle.jit.to_static 进行注释
@paddle.jit.to_static
def forward(self, inputs):
y = self.flatten(inputs)
y = self.linear_1(y)
y = self.relu(y)
y = self.dropout(y)
y = self.linear_2(y)
return y
# 用 DataLoader 实现数据加载
train_loader = paddle.io.DataLoader(train_dataset, batch_size=64, shuffle=True)

mnist=Mnist()
mnist.train()

# 设置迭代次数
epochs = 1

# 设置优化器
optim = paddle.optimizer.Adam(parameters=mnist.parameters())
# 设置损失函数
loss_fn = paddle.nn.CrossEntropyLoss()

for epoch in range(epochs):
for batch_id, data in enumerate(train_loader()):
print(batch_id)

x_data = data[0] # 训练数据
y_data = data[1] # 训练数据标签
predicts = mnist(x_data) # 预测结果

# 计算损失 等价于 prepare 中loss的设置
loss = loss_fn(predicts, y_data)

# 计算准确率 等价于 prepare 中metrics的设置
acc = paddle.metric.accuracy(predicts, y_data)

# 下面的反向传播、打印训练信息、更新参数、梯度清零都被封装到 Model.fit() 中

# 反向传播
loss.backward()

# if (batch_id+1) % 900 == 0:
# print("epoch: {}, batch_id: {}, loss is: {}, acc is: {}".format(epoch, batch_id+1, loss.numpy(), acc.numpy()))

# 更新参数
optim.step()

# 梯度清零
optim.clear_grad()

 

D:\software\miniconda\python.exe D:/code/mycode/csv-voc/test8.py
D:\software\miniconda\lib\site-packages\win32\lib\pywintypes.py:2: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import imp, sys, os
D:\software\miniconda\lib\site-packages\paddle\fluid\layers\utils.py:77: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working
return (isinstance(seq, collections.Sequence) and
WARNING:root:DataLoader reader thread raised an exception.
0
Exception in thread Thread-3:
Traceback (most recent call last):
File "D:\software\miniconda\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "D:\software\miniconda\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "D:\software\miniconda\lib\site-packages\paddle\fluid\dataloader\dataloader_iter.py", line 199, in _thread_loop
six.reraise(*sys.exc_info())
File "D:\software\miniconda\lib\site-packages\six.py", line 703, in reraise
raise value
File "D:\software\miniconda\lib\site-packages\paddle\fluid\dataloader\dataloader_iter.py", line 167, in _thread_loop
batch = self._dataset_fetcher.fetch(indices)
File "D:\software\miniconda\lib\site-packages\paddle\fluid\dataloader\fetcher.py", line 99, in fetch
data = [self.dataset[idx] for idx in batch_indices]
File "D:\software\miniconda\lib\site-packages\paddle\fluid\dataloader\fetcher.py", line 99, in
data = [self.dataset[idx] for idx in batch_indices]
File "D:\software\miniconda\lib\site-packages\paddle\vision\datasets\mnist.py", line 169, in __getitem__
image = self.transform(image)
File "D:\software\miniconda\lib\site-packages\paddle\vision\transforms\transforms.py", line 269, in __call__
outputs.append(apply_func(inputs[i]))
File "D:\software\miniconda\lib\site-packages\paddle\vision\transforms\transforms.py", line 343, in _apply_image
return F.to_tensor(img, self.data_format)
File "D:\software\miniconda\lib\site-packages\paddle\vision\transforms\functional.py", line 82, in to_tensor
return F_pil.to_tensor(pic, data_format)
File "D:\software\miniconda\lib\site-packages\paddle\vision\transforms\functional_pil.py", line 77, in to_tensor
img = paddle.to_tensor(np.array(pic, copy=False))
File "", line 2, in to_tensor
File "D:\software\miniconda\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 25, in __impl__
return wrapped_func(*args, **kwargs)
File "D:\software\miniconda\lib\site-packages\paddle\fluid\framework.py", line 226, in __impl__
), "We only support '%s()' in dynamic graph mode, please call 'paddle.disable_static()' to enter dynamic graph mode." % func.__name__
AssertionError: We only support 'to_tensor()' in dynamic graph mode, please call 'paddle.disable_static()' to enter dynamic graph mode.

Traceback (most recent call last):
File "D:/code/mycode/csv-voc/test8.py", line 97, in
for batch_id, data in enumerate(train_loader()):
File "D:\software\miniconda\lib\site-packages\paddle\fluid\dataloader\dataloader_iter.py", line 204, in __next__
data = self._reader.read_next_var_list()
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.
[Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at C:\home\workspace\Paddle_release\paddle/fluid/operators/reader/blocking_queue.h:166)


Process finished with exit code 1

 

 

0
收藏
回复
全部评论(4)
时间顺序
三岁
#2 回复于2021-07

数据阻塞!你查一下数据集是不是读取出来的数据都是一样的,数据类型是不是有不对的和官方的不一样,检查完基本上就没有问题了,这个报错确实精确不了,得自己排查

0
回复
x
xcypcpf
#3 回复于2021-07
三岁 #2
数据阻塞!你查一下数据集是不是读取出来的数据都是一样的,数据类型是不是有不对的和官方的不一样,检查完基本上就没有问题了,这个报错确实精确不了,得自己排查

去掉@paddle.jit.to_static,用动态图模式就没有问题

0
回复
三岁
#4 回复于2021-07

静态图使用模式好像靴微有点不一样

0
回复
z
zzojin
#5 回复于2021-08

我也遇到了相同的问题

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