示例#1
0
if __name__ == '__main__':
    max_error = 0
    for change_ordering in [False, True]:
        for kernel_size in [1, 3, 5, 7]:
            for padding in [0, 1, 3]:
                for stride in [1, 2, 3, 4]:
                    # RuntimeError: invalid argument 2: pad should be smaller than half of kernel size, but got padW = 1, padH = 1, kW = 1,
                    if padding > kernel_size / 2:
                        continue

                    model = LayerTest(kernel_size=kernel_size, padding=padding, stride=stride)
                    model.eval()

                    input_np = np.random.uniform(0, 1, (1, 3, 224, 224))
                    input_var = Variable(torch.FloatTensor(input_np))

                    torch.onnx.export(model, input_var, "_tmpnet.onnx", verbose=True, input_names=['test_in'],
                                      output_names=['test_out'])

                    onnx_model = onnx.load('_tmpnet.onnx')
                    k_model = onnx_to_keras(onnx_model, ['test_in'], change_ordering=change_ordering)

                    error = check_torch_keras_error(model, k_model, input_np, change_ordering=change_ordering)
                    print('Error:', error)

                    if max_error < error:
                        max_error = error

    print('Max error: {0}'.format(max_error))
示例#2
0
import torch
from torch.autograd import Variable
from onnx2keras_custom import onnx_to_keras, check_torch_keras_error
import onnx
from torchvision.models.densenet import densenet121

if __name__ == '__main__':
    model = densenet121()
    model.eval()

    input_np = np.random.uniform(0, 1, (1, 3, 224, 224))
    input_var = Variable(torch.FloatTensor(input_np), requires_grad=False)
    output = model(input_var)

    torch.onnx.export(model, (input_var),
                      "_tmpnet.onnx",
                      verbose=True,
                      input_names=['test_in1'],
                      output_names=['test_out'])

    onnx_model = onnx.load('_tmpnet.onnx')
    k_model = onnx_to_keras(onnx_model, ['test_in1', 'test_in2'],
                            change_ordering=True)

    error = check_torch_keras_error(model,
                                    k_model,
                                    input_np,
                                    change_ordering=True)

    print('Max error: {0}'.format(error))