コード例 #1
0
param = {
    'batch_size': 100,  # 训练时每次批量处理图片的数量
    'test_batch_size': 100,  # 测试时每次批处理图片的数量
    'num_epochs': 1000,  # 对所有样本训练的轮数
    # 'learning_rate': 1e-4,  # 学习率
    'learning_rate': 1e-5,  # 学习率
    'weight_decay': 5e-5,  # 权重衰减,相当于在损失函数后加入正则化项,降低整体权重值,防止过拟合
    # 'weight_decay': 0,  # 权重衰减,相当于在损失函数后加入正则化项,降低整体权重值,防止过拟合
    'epsilon': 0.2
}

'''
加载数据集
'''
train_dataset, test_dataset = Data_Reader.Mnist.Mnist_dataset().get_dataset()
loader_train = Data_Reader.get_dataloader(dataset=train_dataset,
                                          batch_size=param['batch_size'])
loader_test = Data_Reader.get_dataloader(dataset=test_dataset,
                                         batch_size=param['test_batch_size'])

'''
搭建模型
模型在model.py里面搭建好了,这里直接调用
'''
modelpath = './train3_AdvT.pkl'
net = Models.Lenet5.Lenet5()  # 加载模型
net = Models.load_state_dict(net, modelpath)
base.enable_cuda(net)  # 使用cuda
num_correct, num_samples, acc = Optimizer.test(net, loader_test)  # 测试一下最初的效果
print('[Start] right predict:(%d/%d) ,pre test_acc=%.4f%%' % (num_correct, num_samples, acc))

'''
コード例 #2
0
# sys.path.append('D:\\code\\Python\\Experiment\\newNetwork\\new\\yszxx\\yszxx')
'''自建包'''
import _Base_ as base
import Data_Reader
import Models
import Optimizer
import Adversary
'''超参数'''
param = {
    'test_batch_size': 100,
    'epsilon': 0.2,
}
'''加载测试数据'''
test_dataset = Data_Reader.Mnist.Mnist_dataset().get_test_dataset()
loader_test = Data_Reader.get_dataloader(dataset=test_dataset,
                                         batch_size=param['test_batch_size'],
                                         shuffle=False)
# 10000-1
'''加载模型'''
net = Models.Lenet5.Lenet5()
net = Models.load_state_dict(net, './lenet5_dict.pkl')
num_correct, num_samples, acc = Optimizer.test(net, loader_test)
print('[Start] right predict:(%d/%d) ,pre test_acc=%.4f' %
      (num_correct, num_samples, acc))
# right predict:(936/10000) ,pre test_acc=9.3600
'''模型测试过程'''
base.enable_cuda(net)  # 使用cuda
net.eval()  # 推断模式
for p in net.parameters():  # 将模型参数的梯度获取设为false()
    p.requires_grad = False
Optimizer.test(net, loader_test)  # 测试干净样本的性能