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