您不应将准确性视为回归问题的度量标准,因为您尝试输出单个值,即使精度的微小变化将导致其为零,也可以考虑以下示例。
考虑到您试图预测值15,并且模型返回值14.99,结果精度仍然为零。
m = tf.keras.metrics.Accuracy()
_ = m.update_state([[15]],[[14.99]])
m.result().numpy()
结果:
0.0
您可以考虑使用以下指标进行回归。
- 回归指标
- MeanSquaredError类
- RootMeanSquaredError类
- MeanAbsoluteError类
- MeanAbsolutePercentageError类
- MeanSquaredLogarithmicError类
- CosineSimilarity类
- LogCoshError类
我用上面列出的指标之一尝试了相同的问题,下面是结果。
def bin2int(bin_list):
#bin_list = [0,1]
int_val = ""
for k in bin_list:
int_val += str(int(k))
#int_val = 11011011
return int(int_val,2)
def dataset(num):
# num - no of samples
bin_len = 8
X = np.zeros((num,bin_len))
Y = np.zeros((num))
for i in range(num):
X[i] = np.around(np.random.rand(bin_len)).astype(int)
Y[i] = bin2int(X[i])
return X,Y
no_of_smaples = 220000
trainX,trainY = dataset(no_of_smaples)
testX,testY = dataset(5)
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(8,activation='relu'),tf.keras.layers.Dense(1,activation='relu')
])
model.compile(optimizer='adam',loss='mean_absolute_error',metrics=['mse'])
model.fit(trainX,trainY,validation_data = (testX,testY),epochs=4)
model.summary()
输出:
Epoch 1/4
6875/6875 [==============================] - 15s 2ms/step - loss: 27.6938 - mse: 2819.9429 - val_loss: 0.0066 - val_mse: 5.2560e-05
Epoch 2/4
6875/6875 [==============================] - 15s 2ms/step - loss: 0.0580 - mse: 0.1919 - val_loss: 0.0066 - val_mse: 6.0013e-05
Epoch 3/4
6875/6875 [==============================] - 16s 2ms/step - loss: 0.0376 - mse: 0.0868 - val_loss: 0.0106 - val_mse: 1.2932e-04
Epoch 4/4
6875/6875 [==============================] - 15s 2ms/step - loss: 0.0317 - mse: 0.0466 - val_loss: 0.0177 - val_mse: 3.2429e-04
Model: "sequential_11"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_24 (Dense) multiple 72
_________________________________________________________________
dense_25 (Dense) multiple 9
_________________________________________________________________
round_4 (Round) multiple 0
=================================================================
Total params: 81
Trainable params: 81
Non-trainable params: 0
预测:
model.predict([[0.,0.,1.,0.]])
array([[5.993815]],dtype = float32)
本文链接:https://www.f2er.com/3150290.html