构建序列
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/100127/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)
如果结果与真实值相差如此之大,val_acc 怎么可能是1,结果是
step 1 2true [9996, 9999 ]pred [10141.571, 10277.236]
回答:
准确性度量仅适用于分类任务。因此,如果在回归任务中使用准确性作为度量,所报告的度量值可能完全无效。从您的代码来看,我认为您正在进行回归任务,因此不应使用此度量。
以下是您在Keras中可以用于回归问题的度量列表。
均方误差: mean_squared_error, MSE或mse平均绝对误差: mean_absolute_error, MAE, mae平均绝对百分比误差: mean_absolute_percentage_error, MAPE, mape余弦相似度: cosine_proximity, cosine
您可以在链接了解一些理论知识,并在链接查看一些Keras示例代码。
抱歉,时间有点紧,但我相信这些链接会对您有很大帮助。:)