tensorboardX Deep Learning

tensorboardX(텐서보드 엑스) : Pytorch framework에서 사용 가능한 딥러닝 visualization tool



1.

Tensorflow framework에는 tensorboard라고 하는 visualization tool이 있다.
필요한 정보를 학습할때마다 log 형태로 저장하고, 이를 web기반으로 실시간 또는 학습이 끝난 뒤 확인이 가능하다.

2.

Pytorch framework의 경우 tensorflow의 tensorboard에 대응되는 visualization tool이 별도로 존재하지 않는다.
많은 유저들이 이미 익숙해져 있는 tensorflow의 tensorboard를 그대로 이용하고자 하는 것이 tensorboardX 다.



tensorboardX로 저장한 log를 tensorboard로 띄운 결과.


3. 

설치방법은 pip을 사용


pip install tensorboardX

4.

이후 실행방법은 tensorboard와 같다. (tensorboardX로 저장한 log를 tensorboard로 읽는 것이기 때문에)
tensorboard --logdir=(SummaryWriter에서 설정해놓은 logdir)


Tensorflow가 설치되어 있지 않기 때문에 tensorflow를 찾을 수 없다는 문구가 뜨는데 tensorboard사용에는 문제가 없다.

별다른 설정을 하지 않았다면 tensorboard의 포트값은 6006이다.
사용하는 web browser에서 다음의 주소로 들어가면 된다.

localhost:6006


5.


작성하다 보니 pytorch.utils 모듈 내에 tensorboard가 제공되고 있는 것을 확인하였다.



추후 수정될 수 있으며 아직 add_graph가 작업 중 이라고 한다.
pytorch 사용자들 내에서도 시각화에 대한 니즈가 있고, 이를 반영하여 대체제로 tensorboardX가 널리 사용되었던 것인 만큼
조만간 이 모듈을 통해 pytorch 자체에서 시각화가 용이해질 것으로 생각된다.


.c, .cpp, .h 외의 확장자들 : .cxx, .hpp C/C++

요약하자면, c가 아닌 c++ 스타일로 정의된 헤더파일은 그것이 c++ 스타일임을 명시해 주어야 할 필요가 있기 때문에 .hpp와 같이 다른 확장자를 사용함으로서 이를 알 수 있게 한다.

cxx와  cpp는 같다고 생각한다.

It is probably due to a project using libraries (in form of source code) that don't use the same naming convention the programmer(s) of the project.

There are at least four different extensions usable for C++ files:
  • .C
    Not very popular since it requires a case-sensitive file system (otherwise, it would clash with old .c file names), and even a few modern OS are not case-sensitive.
  • .c++
    Some OS or file systems don't support the + character in file names.
  • .cpp
    That's very portable across file systems.
    But, it might be less consistent than .cxx
  • .cxx
    Very portable across file systems (not more than .cpp)
    Using the name CXX for C++ is quite popular because CPP usually designates the C (and C++) pre-processor.
    For example, these environment variables/makefile macros
    • CPPFLAGS
      Represents the flags passed to the pre-processor.
    • CFLAGS
      Flags passed to the C compiler.
    • CXXFLAGS
      Flags passed to the C++ compiler.
    • LDFLAGS
      Flags passed to the linker.
    • CC
      The path to the C compiler.
    • CPP
      The path to the pre-processor.
    • CXX
      The path to the C++ compiler.
    • LD
      The path to the linker.

    That's why, with the above notations, it's very natural to give the .cxx extension to C++ files.


For headers, there are at least five extensions:
  • .h
    Traditional C header files.
    Since the compiler doesn't do anything based on this extension, it can be used for C++ header files too.
    Furthermore, there are a lot of header files that are designed to be included by both C and C++ translation units.
    In that case, it's natural to give them this extension.
  • .H, .hpp or .hxx
    That's very natural to give one of these extensions for C++ header files (being consistent with the name of C++ translation units).
    That's not a bad idea to use one of these name for pure C++ header files only (containing class definitions, or templates, or any other feature not supported by C).
  • No extension
    That's internally used by a number of C++ compilers for iostream, vector, algorithm and all others new-style C++ headers.

There are probably other (less popular) extensions for headers.
Perhaps .cpp and .i



arg min(x) and arg max(x) Mathematics

min(f(x))는 f(x)의 최소값
arg min(f(x))는 f(x)를 최소로 만드는 x값

max(f(x))는 f(x)의 최대값
arg max(f(x))는 f(x)를 최대로 만드는 x값

예를들어, f(x)=cos(x)일때 arg max(f(x))와 arg min(f(x))는 다음과 같다.

물론, max(f(x)) = 1, min(f(x)) = -1 이다.

Hadamard product(아다마르 곱) Mathematics

같은 차원의 두 행렬 A, B를 아다마르 곱 했을 때, 그 결과 C의 i, j의 원소는 A행렬의 i, j번째 원소와 B행렬의 i, j번째 원소의 곱과 같다. 즉, A와 B가 각각 3*2행렬이라면 두 행렬 A, B의 아다마르 곱은 다음과 같다.


MATLAB
array multiplication (*.)으로 계산한다.

출처:
http://en.wikipedia.org/wiki/Hadamard_product_(matrices)

Greedy algorithm(탐욕 알고리즘) Mathematics

'매 순간 최선의 선택을 하는 것이 최종적으로 최선의 방향으로 근접해 나가는 것이다.'라는 전제하에 문제에 접근

모든 경우의 수를 고려하지 않기 때문에 이번의 선택이 다음에 어떤 영향을 줄지는 알 수 없다.
즉, Local minimum 문제를 벗어날 수 없는 큰 단점이 있다.

Graph..

1 2 3 4 5 6 7