【发布时间】:2021-04-01 18:43:01
【问题描述】:
我一直在研究一个张量流模型,该模型使用动量指标预测股市的短期正面和负面趋势。我将模型设置为在最后 32 个时间步长的每个时间步中采用 7 个指标的 32x7 矩阵。如果价格在最后一个时间步之后上涨,则标签为 1,如果价格保持不变或下降,则为 0。
我有一个自定义度量函数,可以打印出每个时期的预测和真实值,我发现真实值不是 0 或 1,它们徘徊在 ~.7。对于二元分类,这没有帮助,因为所有预测也将徘徊在 ~.7。谁能向我解释一下可能导致模型以这种方式更改标签的原因?
这是模型和前 10 个 epoch 的截图供参考。
def true(y_true, y_pred):
return y_true
def pred(y_true, y_pred):
return y_pred
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(50, kernel_size=(3,3), padding='same',
kernel_regularizer=tf.keras.regularizers.l2(0.01)),
tf.keras.layers.AveragePooling2D((2,2)),
tf.keras.layers.Conv2D(25, kernel_size=(2,2), padding='same',
kernel_regularizer=tf.keras.regularizers.l2(0.01)),
tf.keras.layers.AveragePooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(1, activation='sigmoid'),
])
model.compile(optimizer=tf.keras.optimizers.Adam(lr=1e-5,), loss=tf.keras.losses.Huber(), metrics=
['binary_accuracy', 'mae', pred, true])
model.fit(X,Y, validation_data = (X_val, Y_val), epochs=100, batch_size=100, callbacks=[])
【问题讨论】:
-
您正在查看真实值的平均值,而不是实际真实值本身。真正的值不会被 keras 改变。
-
@Dr.Snoopy 这是有道理的,但为什么预测都停留在那个意思上呢?我正在尝试创建一个可部署的模型,但它需要能够为此预测 0 和 1。
标签: python tensorflow keras conv-neural-network classification