[Deep learning] Gradient Descent Optimizer

이미지
https://icim.nims.re.kr/post/easyMath/70 알기 쉬운 산업수학 알기 쉬운 산업수학 Gradient Descent Optimizer 2017년 12월 13일(수) | 김민중 URL  (1) 주어진 목적함수  f f 의 최솟값(minimum)을 찾아가는 알고리즘으로 다음과 같은 방식으로 최솟값을 찾아간다. 초기값  x 0 x 0 을 임의로 설정, 적당한 Learning rate  α α  설정 n ≥ 0 n ≥ 0 인 정수에 대해서  x n + 1 x n + 1 은 다음과 같이 정의한다. x n + 1 : = x n − α ⋅ ∇ f ( x n ) x n + 1 := x n − α ⋅ ∇ f ( x n ) 주의사항 함수 f f 의 모양이 convex가 아닌 경우 global minimum이 아닌 local minimum으로  x n x n 이 수렴할 가능성이 있다. Learning rate  α α  값이 큰 경우 최솟값으로  x n x n 이 수렴하는 것이 아니라 발산할 수 있다. Learning rate  α α  값이 작은 경우 수렴하는 속도가 지나치게 느릴 수 있다. 방정식  2 ⋅ x = 10 2 ⋅ x = 10  의 근을 Gradient Descent를 이용해서 찾아보자. 목적함수  f ( x ) : = ( 10 − 2 x ) 2 f ( x ) := ( 10 − 2 x ) 2 으로 설정하겠다( f f 의 최솟값인 0이 되게 하는  x x 값이 우리가 원하는 방정식의 근이다). 초기값  x 0 = 0 x 0 = 0 , Learning rate  α = 0.05 α = 0.05 으로 설정 f ′ ( x ) = 4 ( 2 x − 10 ) f ′ ( x ) = 4 ( 2 x − 10 ) 이므로  x 1 x 1 은 다음과 같이 구할 수 있다. x 1 = x 0 − α ⋅ f ′ ( x 0 ) = 0 − 0.05 ⋅ ( − 40 ) = 2 x

[Android][Opencv][NDK] FLANNException("Invalid index file, cannot read");


1. Problem





2. Solution

LOCAL_CFLAGS += -fexceptions



LOCAL_PATH := $(call my-dir)

OPENCV_INSTALL_MODULES := on

include $(CLEAR_VARS)
include D:/Data/Libraries/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_C_INCLUDES := D:/Data/Libraries/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include
LOCAL_C_INCLUDES += D:/Data/Libraries/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv
LOCAL_C_INCLUDES += D:/Data/Libraries/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv2

LOCAL_MODULE := liveness-lib
LOCAL_SRC_FILES := livenesslib.cpp
LOCAL_LDLIBS +=  -llog -ldl

LOCAL_CFLAGS += -fexceptions

include $(BUILD_SHARED_LIBRARY)




3. Error Messages

armeabi] Compile++ thumb: cvutils-lib <= cvutilslib.cpp
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:39:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/general.h:41:36: error: expected class name
class FLANNException : public std::runtime_error
                                   ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/general.h:44:48: error: member initializer 'runtime_error' does not name a non-static data member or base class
    FLANNException(const char* message) : std::runtime_error(message) { }
                                               ^~~~~~~~~~~~~~~~~~~~~~
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/general.h:46:55: error: member initializer 'runtime_error' does not name a non-static data member or base class
    FLANNException(const std::string& message) : std::runtime_error(message) { }
                                                      ^~~~~~~~~~~~~~~~~~~~~~
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:41:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/params.h:33:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/any.h:262:42: error: cannot use 'throw' with exceptions disabled
        if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast();
                                         ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/any.h:271:42: error: cannot use 'throw' with exceptions disabled
        if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast();
                                         ^
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:41:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/params.h:78:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException(std::string("Missing parameter '")+name+std::string("' in the parameters given"));
        ^
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:42:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:113:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Invalid index file, cannot read");
        ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:117:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Invalid index file, wrong signature");
        ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:151:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Cannot read from file");
        ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:160:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Cannot read from file");
        ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:165:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Cannot read from file");
        ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:176:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Cannot read from file");
        ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/saving.h:181:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Cannot read from file");
        ^
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:44:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/all_indices.h:38:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/kmeans_index.h:308:13: error: cannot use 'throw' with exceptions disabled
            throw FLANNException("Unknown algorithm for choosing initial centers.");
            ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/kmeans_index.h:378:13: error: cannot use 'throw' with exceptions disabled
            throw FLANNException("Branching factor must be at least 2");
            ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/kmeans_index.h:479:13: error: cannot use 'throw' with exceptions disabled
            throw FLANNException("Number of clusters must be at least 1");
            ^
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:44:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/all_indices.h:41:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/hierarchical_clustering_index.h:304:13: error: cannot use 'throw' with exceptions disabled
            throw FLANNException("Unknown algorithm for choosing initial centers.");
            ^
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/hierarchical_clustering_index.h:395:13: error: cannot use 'throw' with exceptions disabled
            throw FLANNException("Branching factor must be at least 2");
            ^
In file included from jni/cvutilslib.cpp:6:
In file included from jni/cvutils.h:8:
In file included from jni/.\lbp\lbp.hpp:7:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include/opencv\cv.h:69:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann.hpp:50:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/flann_base.hpp:44:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/all_indices.h:43:
In file included from c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/autotuned_index.h:36:
c:/Libs/opencv-2.4.13.3-android-sdk/OpenCV-android-sdk/sdk/native/jni/include\opencv2/flann/index_testing.h:95:9: error: cannot use 'throw' with exceptions disabled
        throw FLANNException("Ground truth is not computed for as many neighbors as requested");
        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [obj/local/armeabi/objs/cvutils-lib/cvutilslib.o] Error 1


4. Reference

https://github.com/code-iai/iai_kinect2/issues/377

This happens in the kinect registration package. However, when I added the following line to the kinect_registration CMakeLists.txt, it works
add_definitions( -fexceptions )


댓글

이 블로그의 인기 게시물

@import' when modules are disabled

MagicaVoxel black screen

[Iphone][build error] pngcrush caught libpng error: PNG unsigned integer out of range.