首页 Paddle框架 帖子详情
救助!'Model' object has no attribute '_metrics'
收藏
快速回复
Paddle框架 问答模型训练 699 2
救助!'Model' object has no attribute '_metrics'
收藏
快速回复
Paddle框架 问答模型训练 699 2

做的线性回归

import paddle
import paddle.nn.functional as F
paddle.set_default_dtype("float32")

# step1:用高层API定义数据集,无需进行数据处理等,高层API为你一条龙搞定

class MyModel(paddle.nn.Layer):
    def __init__(self):
        super(MyModel, self).__init__()
        self.linear1 = paddle.nn.Linear(in_features=27, out_features=120)
        self.linear2 = paddle.nn.Linear(in_features=120, out_features=1)

    def forward(self, x):
        x = self.linear1(x)
        x = F.relu(x)
        x = self.linear2(x)
        return x


# step3:训练模型
model = paddle.Model(MyModel())
model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),
              paddle.nn.MSELoss(), 
              metrics=paddle.metric.Precision())
# 为模型训练做准备,设置优化器及其学习率,并将网络的参数传入优化器,设置损失函数和精度计算方式


model.fit(dataset,  epochs=2, batch_size=8, verbose=1)
paddle.disable_static()
model.save('moxing/test1')

输出:
The loss value printed in the log is the current step, and the metric is the average value of previous steps.
Epoch 1/2
step 6156/6156 [==============================] - loss: 0.9799 - precision: 0.0000e+00 - 2ms/step          
Epoch 2/2
step 6156/6156 [==============================] - loss: 0.4947 - precision: 0.0000e+00 - 2ms/step  

但是调用保存的模型后却不能正常运行model.predict()函数。

直接运行内存中保存的模型是可以正常预测的。

就很奇怪?保存和读取也就两行代码,哪里错了?

input_dir = 'C:/Users/win10/Desktop/fengdian/input/1/FD01.csv'
output_file = 'test23.json'
class MyModel(paddle.nn.Layer):
    def __init__(self):
        super(MyModel, self).__init__()
        self.linear1 = paddle.nn.Linear(in_features=27, out_features=120)
        self.linear2 = paddle.nn.Linear(in_features=120, out_features=1)

    def forward(self, x):
        x = self.linear1(x)
        x = F.relu(x)
        x = self.linear2(x)
        return x

mymodel = paddle.Model(MyModel())
mymodel.load('moxing/test1')

X = pd.read_csv(input_dir, encoding='gbk')
X = X.sort_values(by='预报时刻')
X['时间'] = X['预报时刻']
X = X.drop(columns=['起报时刻', '预报时刻'])
if 'Unnamed: 0' in X.columns:
    X = X.drop(columns=['Unnamed: 0'])
X = scale_op.transform(X)
X = time_extract(X)

X = scale_op.transform(X)
    

xx=X.values.tolist()
xxx = np.array(xx).astype('float32')

    # 不同设备建议使用不同模型预测,装机容量不一致。此处使用同一模型做演示

y = mymodel.predict(xxx)

报错信息:

Predict begin...
step 670/672 [============================>.] - ETA: 0s - 729us/step
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_15608\3428503837.py in 
     19     # 不同设备建议使用不同模型预测,装机容量不一致。此处使用同一模型做演示
     20 
---> 21 y = mymodel.predict(xxx)
     22 #X = self.scale_op1.transform(X)
     23 

D:\study_software\annoconda\envs\fd\lib\site-packages\paddle\hapi\model.py in predict(self, test_data, batch_size, num_workers, stack_outputs, verbose, callbacks)
   1986         outputs = []
   1987 
-> 1988         logs, outputs = self._run_one_epoch(test_loader, cbks, 'predict')
   1989 
   1990         outputs = list(zip(*outputs))

D:\study_software\annoconda\envs\fd\lib\site-packages\paddle\hapi\model.py in _run_one_epoch(self, data_loader, callbacks, mode, logs)
   2134                     del self.num_iters
   2135                     break
-> 2136         self._reset_metrics()
   2137 
   2138         if mode == 'predict':

D:\study_software\annoconda\envs\fd\lib\site-packages\paddle\hapi\model.py in _reset_metrics(self)
   2224 
   2225     def _reset_metrics(self):
-> 2226         for metric in self._metrics:
   2227             metric.reset()
   2228 

AttributeError: 'Model' object has no attribute '_metrics'
0
收藏
回复
全部评论(2)
时间顺序
李长安
#2 回复于2022-12

我记得好像是纬度问题,之前碰到过这种问题,但是忘记怎么解决的了

0
回复
莫名其妙的简
#3 回复于2023-07

把测试集的label和text分开,这个问题可以解决

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