Joe*_*eBe 11 python keras tensorflow
我有一个 LSTM 模型,可以使用多元智能手机传感器数据对人类活动进行二元分类。这两个类是不平衡的(1:50)。因此,我想使用 F1-score 作为指标,但我看到它已被弃用作为指标。
然而,在最佳实践之前,对度量使用回调函数以确保将其应用于整个数据集,但最近TensorFlow 插件重新引入了 F1-Score。
我现在在将此分数应用于我的功能 API 时遇到了问题。这是我目前正在运行的代码:
import tensorflow as tf
import tensorflow_addons as tfa
from tensorflow import kerasdef
create_model(n_neurons=150, learning_rate=0.01, activation="relu", loss="binary_crossentropy"):
#create input layer and assign to current output layer
input_ = keras.layers.Input(shape=(X_train.shape[1],X_train.shape[2]))
#add LSTM layer
lstm = keras.layers.LSTM(n_neurons, activation=activation)(input_)
#Output Layer
output = keras.layers.Dense(1, activation="sigmoid")(lstm)
#Create Model
model = keras.models.Model(inputs=[input_], outputs=[output])
#Add optimizer
optimizer=keras.optimizers.SGD(lr=learning_rate, clipvalue=0.5)
#Compile model
model.compile(loss=loss, optimizer=optimizer, metrics=[tfa.metrics.F1Score(num_classes=2, average="micro")])
print(model.summary())
return model
#Create the model
model = create_model()
#fit the model
history = model.fit(X_train,y_train,
epochs=300,
validation_data=(X_val, y_val))
Run Code Online (Sandbox Code Playgroud)
如果我为 metric 参数使用另一个值average(例如,average=Noneor average="macro"),那么在拟合模型时我会收到一条错误消息:
ValueError:两个形状中的维度 0 必须相等,但分别为 2 和 1。形状为 [ 2 ] 和 [ 1 ]。对于具有输入形状的“AssignAddVariableOp”(操作:“AssignAddVariableOp”):[ ]、[ 1 ]。
如果我使用这个值,average="micro"我不会得到错误,但是 F1 分数0贯穿整个学习过程,而我的损失会减少。
我相信我在这里仍然做错了什么。有人可以为我解释一下吗?
更新的答案:关键是导入 tf.keras,而不是 keras。然后你可以使用例如 tf.keras.metrics.Precision 或 tfa.metrics.F1Score 没有问题。另请参见此处。
旧答案:tensorflow-addons 的问题在于当前版本 (0.6.0) 的实现只计算精确匹配,例如 1 和 0.99 的比较产生 0。当然,这在神经网络中实际上是无用的. 这已在 0.7.0(尚未发布)中修复。您可以按如下方式安装它:
pip3 install --upgrade pip
pip3 install tfa-nightly
Run Code Online (Sandbox Code Playgroud)
然后使用一个阈值(低于阈值的都计为 0,否则计为 1):
tfa.metrics.FBetaScore(num_classes=2,average="micro",threshold=0.9)
Run Code Online (Sandbox Code Playgroud)
另见https://github.com/tensorflow/addons/issues/490。average此处讨论了其他值的问题:https : //github.com/tensorflow/addons/issues/746。
请注意,还有另外两个问题可能会导致无用的结果,另请参见https://github.com/tensorflow/addons/issues/818:
使用 Keras 指标时不应出现这些问题。
| 归档时间: |
|
| 查看次数: |
4625 次 |
| 最近记录: |