Esempio n. 1
0
	parser.add_argument('-t', '--testing', action='store_true',
			help="Test the trained model on testing dataset")
	parser.add_argument('--digit', default=5, type=int,
			help="Digit to manipulate")
	parser.add_argument('-w', '--weights', default=None,
			help="The path of the saved weights. Should be specified when testing")
	parser.add_argument('--lr', default=0.001, type=float,
			help="Initial learning rate")
	parser.add_argument('--gpus', default=4, type=int)
	args = parser.parse_args()
	print(args)
	if not os.path.exists(args.save_dir):
		os.makedirs(args.save_dir)

	# load data
	(x_train, y_train), (x_test, y_test) = load_captcha() if DATA_SOURCE == 'captcha' else load_mnist()

	# define model
	with tf.device('/cpu:0'):
		model, eval_model, manipulate_model = CapsNet(input_shape=x_train.shape[1:],
				n_class=len(np.unique(np.argmax(y_train, 1))),
				routings=args.routings)
	model.summary()
	plot_model(model, to_file=args.save_dir+'/model.png', show_shapes=True)

	# train or test
	if args.weights is not None:  # init the model weights with provided one
		model.load_weights(args.weights)
	if not args.testing:
		# define muti-gpu model
		multi_model = multi_gpu_model(model, gpus=args.gpus)
        '-w',
        '--weights',
        default=None,
        help="The path of the saved weights. Should be specified when testing")
    parser.add_argument('--lr',
                        default=0.001,
                        type=float,
                        help="Initial learning rate")
    parser.add_argument('--gpus', default=2, type=int)
    args = parser.parse_args()
    print(args)
    if not os.path.exists(args.save_dir):
        os.makedirs(args.save_dir)

    # load data
    (x_train, y_train), (x_test, y_test) = load_mnist()

    # define model
    with tf.device('/cpu:0'):
        model, eval_model, manipulate_model = CapsNet(
            input_shape=x_train.shape[1:],
            n_class=len(np.unique(np.argmax(y_train, 1))),
            routings=args.routings)
    model.summary()
    plot_model(model, to_file=args.save_dir + '/model.png', show_shapes=True)

    # train or test
    if args.weights is not None:  # init the model weights with provided one
        model.load_weights(args.weights)
    if not args.testing:
        # define muti-gpu model
    parser.add_argument('--lam_recon', default=0.392, type=float)  # 784 * 0.0005, paper uses sum of SE, here uses MSE
    parser.add_argument('--num_routing', default=3, type=int)  # num_routing should > 0
    parser.add_argument('--shift_fraction', default=0.1, type=float)
    parser.add_argument('--debug', default=0, type=int)  # debug>0 will save weights by TensorBoard
    parser.add_argument('--save_dir', default='./result')
    parser.add_argument('--is_training', default=1, type=int)
    parser.add_argument('--weights', default=None)
    parser.add_argument('--lr', default=0.001, type=float)
    parser.add_argument('--gpus', default=2, type=int)
    args = parser.parse_args()
    print(args)
    if not os.path.exists(args.save_dir):
        os.makedirs(args.save_dir)

    # load data
    (x_train, y_train), (x_test, y_test) = load_mnist()

    # define model
    with tf.device('/cpu:0'):
        model, eval_model = CapsNet(input_shape=x_train.shape[1:],
                                    n_class=len(np.unique(np.argmax(y_train, 1))),
                                    num_routing=args.num_routing)
    model.summary()
    plot_model(model, to_file=args.save_dir+'/model.png', show_shapes=True)

    # define muti-gpu model
    multi_model = multi_gpu_model(model, gpus=args.gpus)
    # train or test
    if args.weights is not None:  # init the model weights with provided one
        model.load_weights(args.weights)
    if args.is_training: