首页 Paddle框架 帖子详情
幼儿园求教,一个神经元实现与操作,fit报错
收藏
快速回复
Paddle框架 问答深度学习 1078 5
幼儿园求教,一个神经元实现与操作,fit报错
收藏
快速回复
Paddle框架 问答深度学习 1078 5

本人幼儿园水平,用飞桨实现感知器  与 的操作,想看看能不能实现,今天就在  fit 处一直报错  不知道哪个环节出错,所有代码如下,请各位大神赐教!

import paddle
import numpy as np
import matplotlib.pyplot as plt
#paddle.__version__


# 训练数据集
train_dataset = np.array([[0,0],[0,1],[1,0],[1,1]],dtype='float32')
#print(len(train_dataset))
label_dataset = np.array([[0],[0],[0],[1]],dtype='float64')

class MyDataset(paddle.io.Dataset):  
    def __init__(self, data, label):
        """
        初始化函数
        """   
        #super(MyDataset, self).__init__()    #为什么要加这一行  不要也行  为什么??
        self.data = data
        self.label = label

    def __getitem__(self, index):
        """
        根据索引获取单个样本
        """
        return self.data[index], self.label[index]
    def __len__(self):
        """
        获取样本总数
        """
        #print(len(self.data))
        #return 4
        return len(self.data)

train_data=MyDataset(train_dataset,label_dataset)


network = paddle.nn.Sequential(
    paddle.nn.Linear(2,1))


# 模型封装实例化
model = paddle.Model(network)

# 模型可视化
model.summary((1, 2))

#模型配置
model.prepare(paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters()),   #优化器
              paddle.nn.CrossEntropyLoss(),                   #loss损失计算方法
              paddle.metric.Accuracy())                       #评估指标



#模型训练
model.fit(train_data,
          epochs=10, 
          batch_size=1,
          verbose=1)





0
收藏
回复
全部评论(5)
时间顺序
可乐加冰100
#2 回复于2021-02

没人回复 看来今天得继续找问题了

0
回复
TC.Long
#3 回复于2021-02

# 模型封装实例化
model = paddle.Model(network)

上面这一句改成下面这样就可以了

# 模型封装实例化
input = paddle.static.InputSpec([None, 2], 'float32', 'x')
label = paddle.static.InputSpec([None, 1], 'int64', 'label')

model = paddle.Model(network,input, label)

0
回复
可乐加冰100
#4 回复于2021-02
TC.Long #3
# 模型封装实例化 model = paddle.Model(network) 上面这一句改成下面这样就可以了 # 模型封装实例化 input = paddle.static.InputSpec([None, 2], 'float32', 'x') label = paddle.static.InputSpec([None, 1], 'int64', 'label') model = paddle.Model(network,input, label)
展开

谢谢回复但仍然报错

0
回复
TC.Long
#5 回复于2021-02

信息可以贴的全一点么?我这边这样是可行的

0
回复
可乐加冰100
#6 回复于2021-02
TC.Long #5
信息可以贴的全一点么?我这边这样是可行的
import paddle
import numpy as np
import matplotlib.pyplot as plt
from paddle.vision.transforms import ToTensor
paddle.__version__

# 训练数据集
train_datas = np.array([
                          [0.0,0.0],
                          [0.0,1.0],
                          [1.0,0.0],
                          [1.0,1.0]
                          ],dtype='float32')
#print(train_dataset)
#label_datas = np.array([[0],[0],[0],[1]],dtype='int64')
#label_datas = np.array([0.0,0.0,0.0,1.0],dtype='float64')
label_datas = np.array([0,0,0,1],dtype='int64')
#print(label_datas)

class MyDataset(paddle.io.Dataset):  
    def __init__(self, datas, labels):# 初始化函数 
        super(MyDataset, self).__init__()    #为什么要加这一行  不要也行  为什么??
        self.datas = datas
        self.labels = labels

    def __getitem__(self, index):#根据索引获取单个样本,返回 ([Tensor[0,1,2,...]],[Tensor[0]])   (数据,标签)
        
        data=[paddle.to_tensor(self.datas[index])]
        label=[paddle.to_tensor(self.labels[index])]     

       #label=[self.labels[index]]
        '''
        data=self.datas[index]
        label=self.labels[index]
        '''
        return data,label        
    def __len__(self):# 获取样本总数     
        return len(self.datas)

train_data=MyDataset(train_datas,label_datas)

#print(type(train_data))
print(train_data[0])


network = paddle.nn.Sequential(
    paddle.nn.Linear(2,1)
    )

# 模型封装实例化
'''
model = paddle.Model(network)
'''
inputs = paddle.static.InputSpec([None, 2], 'float32', 'input')
label = paddle.static.InputSpec([None, 1], 'int64', 'label')
#label = paddle.static.InputSpec([-1, 1], 'float32', 'label')
model = paddle.Model(network, inputs, label)

# 模型可视化
model.summary((1, 2))

#模型配置   paddle.nn.functional.mse_loss
model.prepare(paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters()),   #优化器
              paddle.nn.BCELoss(),                   #loss损失计算方法
              paddle.metric.Accuracy())                       #评估指标
'''             
model.prepare(paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters()),   #优化器
              paddle.nn.CrossEntropyLoss(),                   #loss损失计算方法
              paddle.metric.Accuracy())                       #评估指标
'''
#模型训练
model.fit(train_data,
          epochs=1, 
          batch_size=1,
          verbose=1)

上面一些不断改,不知道训练数据应该是什么数据类型结构
现在是读取数据出错,不知道是训练数据的问题还是其他问题
其中你指导的地方
inputs = paddle.static.InputSpec([None, 2], 'float32', 'input')
label = paddle.static.InputSpec([None, 1], 'int64', 'label')
不用和用 错误的提示一样
再次感谢大神指导!!!!

报错内容:
WARNING:root:DataLoader reader thread raised an exception.
Exception in thread Thread-28:
Traceback (most recent call last):
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 347, in _thread_loop
    six.reraise(*sys.exc_info())
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/six.py", line 703, in reraise
    raise value
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 317, in _thread_loop
    batch = self._dataset_fetcher.fetch(indices)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/fetcher.py", line 65, in fetch
    data = self.collate_fn(data)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 96, in default_collate_fn
    raise RuntimeError("Unknown data type {}".format(type(slot[0])))
RuntimeError: Unknown data type 

The loss value printed in the log is the current step, and the metric is the average value of previous step.
Epoch 1/1
---------------------------------------------------------------------------SystemError                               Traceback (most recent call last) in 
     12           epochs=1,
     13           batch_size=1,
---> 14           verbose=1)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/hapi/model.py in fit(self, train_data, eval_data, batch_size, epochs, eval_freq, log_freq, save_dir, save_freq, verbose, drop_last, shuffle, num_workers, callbacks)
   1493         for epoch in range(epochs):
   1494             cbks.on_epoch_begin(epoch)
-> 1495             logs = self._run_one_epoch(train_loader, cbks, 'train')
   1496             cbks.on_epoch_end(epoch, logs)
   1497 
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/hapi/model.py in _run_one_epoch(self, data_loader, callbacks, mode, logs)
   1777     def _run_one_epoch(self, data_loader, callbacks, mode, logs={}):
   1778         outputs = []
-> 1779         for step, data in enumerate(data_loader):
   1780             # data might come from different types of data_loader and have
   1781             # different format, as following:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py in __next__(self)
    363         try:
    364             if in_dygraph_mode():
--> 365                 return self._reader.read_next_var_list()
    366             else:
    367                 if self._return_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 /paddle/paddle/fluid/operators/reader/blocking_queue.h:158)


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