Exemplo n.º 1
0
def run(iterations):
	nn = Network(10, 1, [ 10, 10, 10 ])
	_input = [ 1 ] * 10
	[ nn.train(_input, [1]) for i in range(0, int(iterations))]
Exemplo n.º 2
0
def nn_init(sizes, batch_sizes, filters, learning_rate=0.1):
    # size = (SUB_IMG_LAYERS, SUB_IMG_HEIGHT // 4, SUB_IMG_WIDTH // 4)
    layers, height, width = sizes[NET_12]
    first_net = Network(learning_rate=learning_rate,
                        input_shape=(batch_sizes[NET_12], layers, height, width),
                        random_state=123
                        )
    first_filter = filters[0]
    first_net.add_convolution_layer(filter_numbers=first_filter[0], filter_size=first_filter[1])
    first_net.add_pooling_layer(pool_size=(2, 2))
    first_net.add_dropout_layer(p=.5)
    first_net.add_fully_connected_layer(hidden_layer_size=500)
    first_net.add_dropout_layer(p=.5)
    first_net.add_softmax_layer(unit_numbers=2)
    first_net.initialize()

    # SUB_IMG_LAYERS, SUB_IMG_HEIGHT // 2, SUB_IMG_WIDTH // 2
    layers, height, width = sizes[NET_24]
    second_net = Network(learning_rate=learning_rate,
                         input_shape=(batch_sizes[NET_24], layers, height, width),
                         random_state=123
                         )
    second_filter = filters[1]
    second_net.add_convolution_layer(filter_numbers=second_filter[0], filter_size=second_filter[1])
    second_net.add_pooling_layer(pool_size=(2, 2))
    second_net.add_dropout_layer(p=.5)
    second_net.add_fully_connected_layer(hidden_layer_size=500)
    second_net.add_dropout_layer(p=.5)
    second_net.add_softmax_layer(unit_numbers=2)
    second_net.initialize()

    # SUB_IMG_LAYERS, SUB_IMG_HEIGHT, SUB_IMG_WIDTH
    layers, height, width = sizes[NET_48]
    third_net = Network(learning_rate=learning_rate,
                        input_shape=(batch_sizes[NET_48], layers, height, width),
                        random_state=123
                        )
    third_filter = filters[2]
    third_net.add_convolution_layer(filter_numbers=third_filter[0], filter_size=third_filter[1])
    third_net.add_pooling_layer(pool_size=(2, 2))
    third_net.add_dropout_layer(p=.5)
    third_net.add_fully_connected_layer(hidden_layer_size=500)
    third_net.add_dropout_layer(p=.5)
    third_net.add_softmax_layer(unit_numbers=2)
    third_net.initialize()
    return [first_net, second_net, third_net]
Exemplo n.º 3
0
import numpy as np

from layers import SigmoidLayer, LogitLayer
from nn import Network

train_images = np.load('train_images.npy')
train_labels = np.load('train_labels.npy')
test_images = np.load('test_images.npy')
test_labels = np.load('test_labels.npy')

net = Network([SigmoidLayer(28 * 28, 200), LogitLayer(200, 10)])

net.train(train_images, train_labels, test_images, test_labels, 1000, 0.1, 100)
Exemplo n.º 4
0
def benchmark(data_path, act_func, save_path):
    """
    测试在线性模型、单隐含层和双隐含层下的功耗模型

    :param data_path: 数据路径
    :param act_func: 激活函数
    :param save_path: 存储路径
    :return:
    """
    if not os.path.exists(data_path + "/" + program + "/data"):
        os.makedirs(data_path + "/" + program + "/data")
    if not os.path.exists(save_path):
        os.makedirs(save_path)

    # mcpat.init(data_path,program)
    event, power = read_data(data_path, program)

    # 测试线性模型
    file_name = save_path + "/linear/prediction_acc"
    if os.path.exists(file_name):
        os.remove(file_name)
    model = Network.linear_model_train(event,
                                       power,
                                       path=save_path,
                                       program_name=program)
    Network.graph(model(event),
                  power,
                  program_name=program,
                  save_path=save_path + "/linear/" + program)

    # 测试单隐含层模型
    file_name = save_path + "/onelayer/prediction_acc"
    if os.path.exists(file_name):
        os.remove(file_name)
        for node in range(4, 14):
            model = Network.onelayer_model(event,
                                           power,
                                           layer_node=node,
                                           act_func=act_func,
                                           path=save_path,
                                           program_name=program)
            Network.graph(model(event),
                          power,
                          program_name=program,
                          save_path=save_path + "/onelayer/" + program + "_" +
                          str(node))
        with open(save_path + "/onelayer/best_acc", "w",
                  encoding="utf-8") as f:
            f.write("BEST_ACC=%.4f node1=%d\n" %
                    (Network.best_acc, Network.node1))
    Network.best_acc, Network.node1 = 0, -1

    # 测试双隐含层模型
    file_name = save_path + "/twolayer/prediction_acc"
    if os.path.exists(file_name):
        os.remove(file_name)
    for node1 in range(4, 14):
        for node2 in range(4, 14):
            model = Network.twolayer_model(event,
                                           power,
                                           layer1_node=node1,
                                           layer2_node=node2,
                                           act_func=act_func,
                                           path=save_path,
                                           program_name=program)
            Network.graph(model(event),
                          power,
                          program_name=program,
                          save_path=save_path + "/twolayer/" + program + "_" +
                          str(node1) + "_" + str(node2))
    with open(save_path + "/twolayer/best_acc", "w", encoding="utf-8") as f:
        f.write("BEST_ACC=%.4f node1=%d node2=%d\n" %
                (Network.best_acc, Network.node1, Network.node2))
    Network.best_acc, Network.node1, Network.node2 = 0, -1, -1