问题描述
我创建了一个神经网络,它将人的图像作为 X_training 值,将他们各自的性别(二进制值)作为 Y_train 值,我的目标是在用户输入图像后预测相关性别。这是我将图像和性别值设置为训练数据的代码:
from sklearn.model_selection import train_test_split
images_f=np.array(images)
images_f_2=images_f/255
labels_f=np.array(genders)
labels_f:
array([1,1,...,0])
我基本上使用卷积层,因为我预测的是一个二进制值(男性或女性,0 或 1),所以我使用 sigmoid 作为我最后的密集层激活方法。
这是模型代码:
# Create a model and add layers
model = Sequential()
model.add(Conv2D(32,(3,3),padding='same',input_shape=(48,48,strides=(1,1),kernel_regularizer=l2(0.001),activation="relu"))
model.add(Conv2D(32,activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Conv2D(64,activation="relu"))
model.add(Conv2D(64,2)))
model.add(Dropout(0.25))
model.add(Conv2D(128,activation="relu"))
model.add(Conv2D(128,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512,activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(1,activation="sigmoid"))
model.summary()
model.compile(
loss='binary_crossentropy',optimizer='adam',metrics=['accuracy']
)
这是我适合值代码的地方:
# Train the model
model.fit(
X_train,[Y_train],batch_size=64,epochs=30,validation_data=(X_test,Y_test),shuffle=True
)
现在一旦我训练了模型,我尝试调用模型并设置我自己的图像之一并进行预测。
from keras.preprocessing import image
img = image.load_img("queen.jpg",target_size=(48,3))
# Convert the image to a numpy array
img = image.img_to_array(img)
# Add a forth dimension to the image (since Keras expects a bunch of images,not a single image)
img/=255
img = np.expand_dims(img,axis=0)
result = model.predict(img)
我得到的结果值:
array([[0.06528784]],dtype=float32)
对于每个图像,我得到一个浮点值,但我期待一个二进制值。为什么?
解决方法
我是这样试的:
$users = "bsimon@contoso.com","jsmith@contoso.com","ljacobson@contoso.com"
foreach ($user in $users)
{
$st = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$st.RelyingParty = "*"
$st.State = "Enabled"
$sta = @($st)
Set-MsolUser -UserPrincipalName $user -StrongAuthenticationRequirements $sta
}