Пример #1
0
def testOneSample(x, y, epsilon, grad_th, coeff, sbst, sbst_model, Oracle, Oracle_model, sbst_pred, Oracle_pred):
	print('Test on a sample with true label ',y)
	X_adv = FastGradSign_h1(x, epsilon, grad_th, sbst)
	#X_adv = Opt_L_BFGS_h1(x, sbst, coeff)

	Pred_Adv_sbst   = fun.NN_pred(X_adv,  sbst_model,   sbst['act'])
	Pred_Adv_Oracle = fun.NN_pred(X_adv,  Oracle_model, Oracle['act'])

	print('Sbst   - Prediction of the Original Sample:  ', sbst_pred)
	print('Oracle - Prediction of the Original Sample:  ', Oracle_pred)
	print('Sbst   - Prediction of the Adversarial Samples: ', Pred_Adv_sbst)
	print('Oracle - Prediction of the Adversarial Samples: ', Pred_Adv_Oracle)

	fig = plt.figure(figsize=(14, 1.2))
	for idx in range(10):	
		fig.add_subplot(1,10,idx+1)
		plt.imshow(np.reshape(X_adv[idx],(28,28)), cmap='gray')
		plt.axis('off')
	plt.show()
Пример #2
0
################################################################################################
'''
Oracle = np.load('Oracle_h1.npz')   # 1 hidden layer
Oracle_model = dict([(0,Oracle['W1']),(1,Oracle['b1']),(2,Oracle['W2']),(3,Oracle['b2'])])
''
Oracle = np.load('Oracle_h2.npz')   # 2 hidden layers
Oracle_model = dict([(0,Oracle['W1']),(1,Oracle['b1']),(2,Oracle['W2']),(3,Oracle['b2']),
					 (4,Oracle['W3']),(5,Oracle['b3'])])
'''
Oracle = np.load('Oracle_h3.npz')   # 3 hidden layers
Oracle_model = dict([(0,Oracle['W1']),(1,Oracle['b1']),(2,Oracle['W2']),(3,Oracle['b2']),
					 (4,Oracle['W3']),(5,Oracle['b3']),(6,Oracle['W4']),(7,Oracle['b4'])])
################################################################################################
Oracle_act = Oracle['act']          # oracle's activation function

Oracle_score = fun.NN_score(fun.NN_pred(X_test, Oracle_model, actfun=Oracle_act),Y_test)
print("Oracle Score: ", Oracle_score)

# Training the substitute model with the algorithm in [1]
sbstClf = MLPClassifier(solver=sbst_solver, alpha=1e-4, hidden_layer_sizes=(80), 
	activation=sbst_act, random_state=1, learning_rate_init=sbst_lrate,
	momentum=sbst_mmt, max_iter=sbst_maxIter)

sbst_Y_pred = []

for epoch in range(sbst_maxEpoch+1):
	
	# Label the current training set using the oracle
	sbst_Y = fun.NN_pred(sbst_X, Oracle_model, actfun=Oracle_act)
	# Train the substitute with the oracle labels
	sbstClf.fit(sbst_X,sbst_Y)
Пример #3
0
testLoc = 1100

# Load MNIST data
mnist = np.load('mnist.npz')
X_test = mnist['teData'][0:testRange]
Y_test = mnist['teLabels'][0:testRange]
(N, nInp) = np.shape(X_test)

# Load Oracle - The same one used in substitute model training
Oracle = np.load('Oracle_h3.npz')  # 3 hidden layers
Oracle_model = dict([(0, Oracle['W1']), (1, Oracle['b1']), (2, Oracle['W2']),
                     (3, Oracle['b2']), (4, Oracle['W3']), (5, Oracle['b3']),
                     (6, Oracle['W4']), (7, Oracle['b4'])])
Oracle_act = Oracle['act']  # oracle's activation function
Oracle_score = fun.NN_score(
    fun.NN_pred(X_test, Oracle_model, actfun=Oracle_act), Y_test)
print("Oracle Score: ", Oracle_score)

# Import a substitute model
sbst = np.load('sbst_NN_h1.npz')
sbst_model = dict([(0, sbst['W1']), (1, sbst['b1']), (2, sbst['W2']),
                   (3, sbst['b2'])])
sbst_act = sbst['act']
sbst_score = fun.NN_score(fun.NN_pred(X_test, sbst_model, actfun=sbst_act),
                          Y_test)
print("Sbst Score: ", sbst_score)

# Predictions
Pred_Ori_sbst = fun.NN_pred(X_test, sbst_model, sbst_act)
Pred_Ori_Oracle = fun.NN_pred(X_test, Oracle_model, Oracle_act)