Python 为什么我的tensorflow模型将二进制分类标签从0和1转换为.7?

Python 为什么我的tensorflow模型将二进制分类标签从0和1转换为.7?,python,tensorflow,keras,conv-neural-network,classification,Python,Tensorflow,Keras,Conv Neural Network,Classification,我一直在研究一个tensorflow模型,该模型利用动量指标预测股票市场的短期积极和消极趋势。我已经建立了一个模型,在最后32个时间步中的每一步都采用了7个指标的32x7矩阵。如果价格在最后一个时间步骤后上涨,则标签为1,如果价格保持不变或下降,则标签为0 我有一个自定义的度量函数,它打印出每个历元的预测值和真值,我发现真值不是0或1,而是在0.7左右徘徊。对于二元分类来说,这是没有帮助的,因为所有的预测值也将徘徊在0.7左右。有谁能向我解释一下是什么原因导致模型以这种方式改变标签 以下是前10

我一直在研究一个tensorflow模型,该模型利用动量指标预测股票市场的短期积极和消极趋势。我已经建立了一个模型,在最后32个时间步中的每一步都采用了7个指标的32x7矩阵。如果价格在最后一个时间步骤后上涨,则标签为1,如果价格保持不变或下降,则标签为0

我有一个自定义的度量函数,它打印出每个历元的预测值和真值,我发现真值不是0或1,而是在0.7左右徘徊。对于二元分类来说,这是没有帮助的,因为所有的预测值也将徘徊在0.7左右。有谁能向我解释一下是什么原因导致模型以这种方式改变标签

以下是前10个时代的模型和屏幕截图,供参考

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。