コード例 #1
0
ファイル: main.py プロジェクト: rennnosuke/CubicCNN
def cnn_3d_shrec_usdf(n_fold):
    # PSB ボクセルデータ(Train/Test双方に存在するクラスのデータのみ)
    data = SHRECVoxelUSDF.create_shrec_voxel_usdf(n_fold=n_fold)

    from CubicCNN.src.util.plotutil import plot_voxel
    for x, y in zip(data.x_test[:, 0], data.y_test):
        print y
        plot_voxel(x == 10)

    # データの順番をランダムに入れ替え
    data.shuffle()
    # データセットの次元ごとの要素数確認
    print data

    # 学習モデル生成関数
    def layer_gen():
        l1 = ConvLayer3d(layer_id=0,
                         shape_size=data.data_shape,
                         activation=calcutil.relu,
                         c_in=1,
                         c_out=16,
                         k=5,
                         s=3,
                         is_dropout=True)
        l2 = MaxPoolLayer3d(layer_id=1,
                            shape_size=l1.output_size,
                            activation=calcutil.identity,
                            c_in=16,
                            k=4)
        l3 = HiddenLayer(layer_id=2,
                         n_in=l2.n_out,
                         n_out=512,
                         activation=calcutil.relu,
                         is_dropout=True)
        l4 = HiddenLayer(layer_id=3,
                         n_in=l3.n_out,
                         n_out=256,
                         activation=calcutil.relu,
                         is_dropout=True)
        l5 = SoftMaxLayer(layer_id=4, n_in=l4.n_out, n_out=len(data.classes()))
        layers = [l1, l2, l3, l4, l5]
        return layers

    # 学習モデル
    model = Model(input_dtype='float32', layers_gen_func=layer_gen)
    print model

    # 学習モデルの学習パラメタを最適化するオブジェクト
    optimizer = Optimizer(data, model)

    # バッチ一回分の学習時に呼ばれる関数
    def on_optimized():
        optimizer.result.save()
        optimizer.params_result.save()

    # 最適化開始
    optimizer.optimize(n_iter=100,
                       n_batch=len(data.x_train) / 10,
                       is_total_test_enabled=False,
                       on_optimized=on_optimized)
コード例 #2
0
def test_shrec_voxel():
    """
    unittestを使わないSHRECVoxelの簡易テスト
    :return:
    """
    # TODO:SHRECデータセットをダウンロード・binvox変換の機構ができたら適宜unittest対応
    classes = parse_cla(PATH_RES_SHAPE_SHREC_CLASS_TEST_CLA).keys()
    shrec = SHRECVoxel.create_shrec_voxel(n_fold=6)
    for x, y in zip(shrec.x_train, shrec.y_train):
        print classes[y]
        plot_voxel(x[0])
コード例 #3
0
ファイル: main.py プロジェクト: kanairen/CubicCNN
def cnn_3d_shrec_usdf(n_fold):
    # PSB ボクセルデータ(Train/Test双方に存在するクラスのデータのみ)
    data = SHRECVoxelUSDF.create_shrec_voxel_usdf(n_fold=n_fold)

    from CubicCNN.src.util.plotutil import plot_voxel
    for x, y in zip(data.x_test[:, 0], data.y_test):
        print y
        plot_voxel(x == 10)

    # データの順番をランダムに入れ替え
    data.shuffle()
    # データセットの次元ごとの要素数確認
    print data

    # 学習モデル生成関数
    def layer_gen():
        l1 = ConvLayer3d(layer_id=0, shape_size=data.data_shape,
                         activation=calcutil.relu, c_in=1, c_out=16, k=5,
                         s=3, is_dropout=True)
        l2 = MaxPoolLayer3d(layer_id=1, shape_size=l1.output_size,
                            activation=calcutil.identity, c_in=16, k=4)
        l3 = HiddenLayer(layer_id=2, n_in=l2.n_out, n_out=512,
                         activation=calcutil.relu, is_dropout=True)
        l4 = HiddenLayer(layer_id=3, n_in=l3.n_out, n_out=256,
                         activation=calcutil.relu, is_dropout=True)
        l5 = SoftMaxLayer(layer_id=4, n_in=l4.n_out, n_out=len(data.classes()))
        layers = [l1, l2, l3, l4, l5]
        return layers

    # 学習モデル
    model = Model(input_dtype='float32', layers_gen_func=layer_gen)
    print model

    # 学習モデルの学習パラメタを最適化するオブジェクト
    optimizer = Optimizer(data, model)

    # バッチ一回分の学習時に呼ばれる関数
    def on_optimized():
        optimizer.result.save()
        optimizer.params_result.save()

    # 最適化開始
    optimizer.optimize(n_iter=100, n_batch=len(data.x_train) / 10,
                       is_total_test_enabled=False, on_optimized=on_optimized)