Tensorflow 从分类预测值得到多标签二值化器逆变换
我做了一个CNN来训练破解验证码。我使用多标签二值化器对标签进行热编码,标签只有三个唯一的类-0、1和2。下面是一小段代码Tensorflow 从分类预测值得到多标签二值化器逆变换,tensorflow,image-processing,keras,one-hot-encoding,multilabel-classification,Tensorflow,Image Processing,Keras,One Hot Encoding,Multilabel Classification,我做了一个CNN来训练破解验证码。我使用多标签二值化器对标签进行热编码,标签只有三个唯一的类-0、1和2。下面是一小段代码 (X_train, X_test, Y_train, Y_test) = train_test_split(X, Y, test_size=0.25, random_state=0) # Convert the labels (letters) into one-hot encodings that Keras can work with l
(X_train, X_test, Y_train, Y_test) = train_test_split(X, Y, test_size=0.25, random_state=0)
# Convert the labels (letters) into one-hot encodings that Keras can work with
lb = MultiLabelBinarizer().fit(Y_train)
Y_train = lb.transform(Y_train)
Y_test = lb.transform(Y_test)
#Here the model is built and fitted. After training the model I want it to predict
#Captcha Prediction
test = []
for i in range(1192,1201):
img = cv2.imread('../input/imagedata/train_'+'{:04d}'.format(i)+'.png',0)
img = ImageAn(img,shape)
img = np.expand_dims(img, axis=2)
img = np.expand_dims(img, axis=0)
pred = np.array(img, dtype="float") / 255.0
y_pred = model.predict_proba(pred)
#I use this because lb.inverse_transform only takes 0 and 1 and not floating values.
for j in range(0,np.size(y_pred)):
if(y_pred[0][j] > 0.5):
y_pred[0][j] = 1
else:
y_pred[0][j] = 0
final = lb.inverse_transform(y_pred)
test.append(final)
test
现在,一旦我编码它,训练它并预测它,我希望预测值被反向编码。但从这里,我只得到了升序中唯一的类值。我得到的测试验证码图像的输出是:000表示0
222给出2
002给出0,2
211给出1,2
201表示0,1,2 订单很重要。如果不清楚,我需要的是: 000表示0,0,0
222给出了2,2,2
002给出0,0,2
211给出2,1,1
201给出2,0,1 我是否应该将3个不同的验证码编号分别分成3列并进行训练。但是,我还必须对单个数字图像进行分割,以便神经网络学习单个数字。我在这里读到了一个类似的问题:。但它没有正确地回答这个问题。 短暂性脑缺血发作