【发布时间】:2021-01-01 20:41:41
【问题描述】:
我用Tensorflow写了一个人脸分类器程序。在这个项目中,首先我只有两张脸,所以我使用binary_crossentropy 作为损失函数。当我决定添加更多面孔时,我从binary_crossentropy 切换到categorical_crossentropy。
我的代码:
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
import pickle
pickle_in = open("/content/gdrive/My Drive/Deep Learning/Yüz Tanıma/X.pickle","rb")
X = pickle.load(pickle_in)
pickle_in = open("/content/gdrive/My Drive/Deep Learning/Yüz Tanıma/y.pickle","rb")
y = pickle.load(pickle_in)
X = X/255.0
model = Sequential()
model.add(Conv2D(128, (4, 4), input_shape=X.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, (4, 4)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dropout(0.4))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(X, y, batch_size=32, epochs=20,validation_split=0.3)
model.save("/content/gdrive/My Drive/Deep Learning/Yüz Tanıma/model.h5")
这是我的训练日志:
Epoch 1/20
1728/1728 [==============================] - 30s 13ms/step - loss: 0.0000e+00 - accuracy: 0.4833 - val_loss: 0.0000e+00 - val_accuracy: 0.4826
Epoch 2/20
1728/1728 [==============================] - 22s 13ms/step - loss: 0.0000e+00 - accuracy: 0.4847 - val_loss: 0.0000e+00 - val_accuracy: 0.4826
Epoch 3/20
1728/1728 [==============================] - 22s 13ms/step - loss: 0.0000e+00 - accuracy: 0.4827 - val_loss: 0.0000e+00 - val_accuracy: 0.4826
如您所见,我的val_loss 和val_accuracy 没有改变。我的代码有什么问题,我该如何解决?
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning