コード例 #1
0
ファイル: mini_network.py プロジェクト: DragonIsle/Neural
def check_image(letter):
    letter = np.asarray(letter.convert('LA'))[:, :, -1] / 255
    conv_layer1 = ConvolutionLayer.init_with_weights_from_file(
        'resources/weights_kernels_t0', 5, 2)
    conv_layer2 = ConvolutionLayer.init_with_weights_from_file(
        'resources/weights_kernels_t1', 5, 2)
    network_conv = Network([
        Layer.init_with_weights(
            read_matrix_from_file('resources/weights_conv_t' + str(i)),
            sigmoid, sigmoid_prime) for i in range(2)
    ], target_func_for_tests, j_cross_entropy_derivative)
    network = ConvolutionNetwork([conv_layer1, conv_layer2], network_conv)

    res_matrix = network.get_result_matrix(np.array([[letter]]))
    return np.argmax(res_matrix.flatten())
コード例 #2
0
ファイル: mini_network.py プロジェクト: DragonIsle/Neural
def run_simple_net():
    network = Network([
        Layer.init_with_weights(
            read_matrix_from_file('resources/weights' + str(i)), sigmoid,
            sigmoid_prime) for i in range(2)
    ], j_cross_entropy, j_cross_entropy_derivative)

    # data = transform_input_imgs_to_data(read_char_images_from_dir('resources/test', False, 36, 27))
    data, answers = read_all_char_examples_with_answers(
        'resources/train', False)

    data = transform_input_imgs_to_data(data)
    print(network.sgd(data, answers, 110, 10, 10, eps=1e-7, visualize=True))

    for i, l in enumerate(network.layers):
        save_matrix_to_file('resources/weights' + str(i), l.get_weights())

    print(network.get_result_matrix(data))

    print(network.process_input(data, answers))
コード例 #3
0
ファイル: mini_network.py プロジェクト: DragonIsle/Neural
def run_conv_net():
    conv_layer1 = ConvolutionLayer.init_with_weights_from_file(
        'resources/weights_kernels0', 5, 2)
    conv_layer2 = ConvolutionLayer.init_with_weights_from_file(
        'resources/weights_kernels1', 5, 2)
    # conv_layer1 = ConvolutionLayer.init_random_convolution_layer(10, 5, 2)
    # conv_layer2 = ConvolutionLayer.init_random_convolution_layer(20, 5, 2)
    layer1 = Layer.layer_with_random_weights(50, 320, sigmoid, sigmoid_prime)
    layer2 = Layer.layer_with_random_weights(10, 50, sigmoid, sigmoid_prime)

    # network_conv = Network([layer1, layer2], j_cross_entropy, j_cross_entropy_derivative)
    network_conv = Network([
        Layer.init_with_weights(
            read_matrix_from_file('resources/weights_conv' + str(i)), sigmoid,
            sigmoid_prime) for i in range(2)
    ], j_cross_entropy, j_cross_entropy_derivative)

    network = ConvolutionNetwork([conv_layer1, conv_layer2], network_conv)

    images, answers = get_example_batch(2000)
    network.sgd(images, answers, 200, 1, 1, 200, 1e-9, visualize=False)

    # for i, l in enumerate(network.fully_connected_net.layers):
    #     save_matrix_to_file('resources/weights_conv' + str(i), l.get_weights())
    #
    # for i, l in enumerate(network.layers):
    #     save_matrix_to_file('resources/weights_kernels' + str(i), map(lambda x: x.flatten(), l.get_weights()))

    for i, l in enumerate(network.fully_connected_net.layers):
        save_matrix_to_file('resources/weights_conv_t' + str(i),
                            l.get_weights())

    for i, l in enumerate(network.layers):
        save_matrix_to_file('resources/weights_kernels_t' + str(i),
                            map(lambda x: x.flatten(), l.get_weights()))

    print(network.process_input(images, answers))
コード例 #4
0
ファイル: mini_network.py プロジェクト: DragonIsle/Neural
def run_on_test_data():
    conv_layer1 = ConvolutionLayer.init_with_weights_from_file(
        'resources/weights_kernels_t0', 5, 2)
    conv_layer2 = ConvolutionLayer.init_with_weights_from_file(
        'resources/weights_kernels_t1', 5, 2)
    network_conv = Network([
        Layer.init_with_weights(
            read_matrix_from_file('resources/weights_conv_t' + str(i)),
            sigmoid, sigmoid_prime) for i in range(2)
    ], target_func_for_tests, j_cross_entropy_derivative)
    network = ConvolutionNetwork([conv_layer1, conv_layer2], network_conv)

    mndata = MNIST('resources/train/mnist')

    images, labels = mndata.load_testing()
    images = np.array(images).reshape(len(images), 1, 28, 28) / 255
    answers = transform_labels_to_vectors(labels)
    print("\nQuality is {:.2f}%\n".format(
        network.process_input(images[:1000], answers[:1000]) * 100 / 1000))

    test_data = cv2.imread("/home/saul/Documents/2.png",
                           cv2.IMREAD_GRAYSCALE) / 255
    network.process_input(np.array([[abs(1 - test_data)]]),
                          np.array([[0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]))