[英]How to optimize a CNN in Keras using precision (instead of accuracy)
This is my first time writing a post.这是我第一次写帖子。 I usually find what I am looking for soon but I didn't have luck this time.
我通常很快就会找到我要找的东西,但这次我没有运气。
My question is simple, I have a target column with True and False values.我的问题很简单,我有一个包含 True 和 False 值的目标列。 Basically, it is a binary classification problem.
基本上,这是一个二元分类问题。 I would like to know how can I optimize my CNN using Precision (instead of metric: Accuracy)?
我想知道如何使用Precision (而不是指标:Accuracy)优化我的 CNN?
Btw, this's doesn't work:顺便说一句,这是行不通的:
model.compile(loss='binary_crossentropy', optimizer=optm, metrics=['precision'])
This is my code:这是我的代码:
model = Sequential()
model.add(Dense(64,name = 'Primera', input_dim=8, activation='relu'))
model.add(Dense(32 ,name = 'Segunda'))
model.add(Dense(1,name = 'Tercera', activation='sigmoid'))
from tensorflow.keras import optimizers
optm = optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False)
model.compile(loss='binary_crossentropy', optimizer=optm, metrics=['accuracy'])
model.summary()
history = model.fit(trainX, trainY,
epochs=1000,
batch_size=16,
validation_split=0.1,
verbose=1)
Thanks!谢谢!
You can use tf.keras.metrics.Precision()
, see the code below for an example.您可以使用
tf.keras.metrics.Precision()
,请参阅下面的代码以获取示例。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import Precision
from sklearn.datasets import make_classification
X, y = make_classification(n_classes=2, n_features=8, n_informative=8, n_redundant=0, random_state=42)
model = Sequential()
model.add(Dense(64, input_dim=8, activation='relu'))
model.add(Dense(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(
loss='binary_crossentropy',
optimizer=Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False),
metrics=[Precision()]
)
model.fit(X, y, epochs=5, batch_size=32, validation_split=0.1, verbose=1)
# Epoch 1/5
# 3/3 [==============================] - 1s 83ms/step - loss: 0.8535 - precision: 0.5116 - val_loss: 0.6936 - val_precision: 0.5714
# Epoch 2/5
# 3/3 [==============================] - 0s 7ms/step - loss: 0.6851 - precision: 0.5200 - val_loss: 0.5975 - val_precision: 0.6667
# Epoch 3/5
# 3/3 [==============================] - 0s 7ms/step - loss: 0.6004 - precision: 0.6545 - val_loss: 0.5370 - val_precision: 0.8000
# Epoch 4/5
# 3/3 [==============================] - 0s 7ms/step - loss: 0.5412 - precision: 0.8250 - val_loss: 0.4878 - val_precision: 0.8000
# Epoch 5/5
# 3/3 [==============================] - 0s 8ms/step - loss: 0.5145 - precision: 0.9394 - val_loss: 0.4462 - val_precision: 0.8000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.