Пример #1
0
iterations = 200
model = autoencoder(input_layer_size, hidden_layer_size, beta, rho, lambd)
input_data = unlabeledData.T
theta = scipy.optimize.minimize(
    model.autoencoder_Cost_Grad,
    x0=model.theta,
    args=(input_data,),
    method="L-BFGS-B",
    jac=True,
    options={"maxiter": iterations},
)


W1 = theta.x[0 : model.W1_dim].reshape(hidden_layer_size, input_layer_size)
b1 = theta.x[model.W1_dim + model.W2_dim : model.W1_dim + model.W2_dim + model.b1_dim].reshape(hidden_layer_size, 1)

showHiddenIMAGES(W1, patch_size, hidden_patch_size)

############# Extracting features
feedForward_train = feedForwardAutoencoder(W1, b1, trainData.T)
feedForward_test = feedForwardAutoencoder(W1, b1, testData.T)
a2_train = feedForward_train.hidden_layer_activiation()
a2_test = feedForward_test.hidden_layer_activiation()


############# Training and testing the logistic regression model
iterations = 100
option = {"maxiter": iterations}
theta_labeled = softmaxTrain(hidden_layer_size, numLabels, lambd, (a2_train.T, trainLabels), option)
pred = softmaxPredict(theta_labeled, (a2_test.T, testLabels))
theta_2= scipy.optimize.minimize(model_2.autoencoder_Cost_Grad, x0=model_2.theta, 
                                 args = (a2_train,), 
                                 method = 'L-BFGS-B', 
                                 jac = True, 
                                 options = {'maxiter': iterations})  
W1_2 = theta_2.x[0:model_2.W1_dim].reshape(hidden_layer_size_2,hidden_layer_size_1)
b1_2 = theta_2.x[model_2.W1_dim+model_2.W2_dim: model_2.W1_dim+model_2.W2_dim +model_2.b1_dim].reshape(hidden_layer_size_2,1) 
                                 

                                                              
####### Train the softmax classifier on the L2 features
iterations = 200
option = {'maxiter':iterations}
feedForward_train_2 = feedForwardAutoencoder(W1_2,b1_2, a2_train)
a2_train_2 = feedForward_train_2.hidden_layer_activiation()
W1_3 = softmaxTrain (hidden_layer_size_2, numLabels, lambd, (a2_train_2.T,train_set[1] ), option)




##### prediction without fine tuning 
pre_theta= np.concatenate ((W1_1.flatten(), W1_2.flatten(),W1_3.flatten(), b1_1.flatten(), b1_2.flatten())) 
feedForward_val_woFN=feedForwardstackedAEC(input_layer_size, hidden_layer_size_1,
                                      hidden_layer_size_2, numLabels,pre_theta, 
                                      valid_set[0].T)
a2_val_woFN = feedForward_val_woFN.hidden_layer_activiation()
pred_woFN = a2_val_woFN.argmax(axis=0)
accuracy_woFN = float(np.sum(np.equal(pred_woFN,  valid_set[1])))/len(pred)

######## fine_tuning