精度度量val_acc是否可以信任?

建立序列

simple_seq= [x for x in list(range(1000)) if x % 3 == 0]

重塑并拆分后

x_train,x_test shape = (159,5,1)
y_train,y_test shape = (159,2)

型号

model = Sequential(name='acc_test')
model.add(Conv1D(
  kernel_size = 2,filters= 128,strides= 1,use_bias= True,activation= 'relu',padding='same',input_shape=(x_train.shape[1],x_train.shape[2])))

model.add(AveragePooling1D(pool_size =(2),strides= [1]))
model.add(flatten())
model.add(Dense(2))

optimizer = Adam(lr=0.001)
model.compile( optimizer= optimizer,loss= 'mse',metrics=['accuracy'])

火车

hist = model.fit(
          x=x_train,y = y_train,epochs=100,validation_split=0.2)

结果:

Epoch 100/100
127/127 [==============================] - 0s 133us/sample - loss: 0.0096 - acc: 1.0000 - val_loss: 0.6305 - val_acc: 1.0000

但是如果使用此模型进行预测:

x_test[-1:] = array([[[9981],[9984],[9987],[9990],[9993]]])

model.predict(x_test[-1:])
result is: array([[10141.571,10277.236]],dtype=float32)

如果结果与事实相去甚远,结果是

,那么vall_acc如何为1

step    1          2
true [9996,9999     ]
pred [10141.571,10277.236] 
ddyyqqrr 回答:精度度量val_acc是否可以信任?

准确度指标仅对分类任务有效。因此,如果您在回归任务中使用准确性作为度量标准,则报告的度量标准值可能根本无效。从您的代码中,我觉得您正在执行回归任务,因此不应使用它。

下面是您可以在Keras中用于回归问题的指标的列表。

Mean Squared Error: mean_squared_error,MSE or mse
Mean Absolute Error: mean_absolute_error,MAE,mae
Mean Absolute Percentage Error: mean_absolute_percentage_error,MAPE,mape
Cosine Proximity: cosine_proximity,cosine

您可以在link上了解一些理论,并在link上看到一些keras示例代码。

很抱歉,时间不多,但我相信这些链接确实会对您有所帮助。 :)

,

根据您的真实/预测值和使用的损失范围-似乎您正在尝试解决回归问题,而不是分类。

因此,如果我对您的理解是正确的-您正在尝试根据输入预测两个数值-而不是预测两个类别中的哪一个对这些输入有效。

如果是这样-您不应使用准确性指标。因为它将仅比较每个输入样本/预测的最大输入索引(略有简化)。例如。 9996

本文链接:https://www.f2er.com/3152915.html

大家都在问