【发布时间】:2019-11-06 10:54:54
【问题描述】:
构建序列
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]
【问题讨论】:
-
您需要完全定义学习问题,我不清楚模型(和训练数据)的输入和输出是什么,这是回归还是分类?如果它的回归,那么查看准确性是没有意义的
-
是的,确实这是一个回归任务,正如您在此处看到的
model.add(Dense(2))那么回归应该使用什么指标呢? -
回归不需要度量,损失本身就是一个度量
-
您可能会发现What function defines accuracy in Keras when the loss is mean squared error (MSE)? 中的讨论很有用。事实上,正如@MatiasValdenegro 所说,你不需要任何额外的回归指标——损失本身就是一个指标
标签: python tensorflow machine-learning keras evaluation