Let’s go!

  • 텐서플로우 컴파일 설치하기

    텐서플로우 GPU 버전을 설치하면 최고인데, CPU 버전만 사용해야 한다. CPU 버전을 쓰면 아래와 같이 메세지가 나온다.

    (tensorflow) now0930@:cifar10$ python cifar10_testv1.py 
    Using TensorFlow backend.
    Couldn't import dot_parser, loading of dot files will not be possible.
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    conv2d_1 (Conv2D)            (None, 32, 32, 32)        896       
    _________________________________________________________________
    dropout_1 (Dropout)          (None, 32, 32, 32)        0         
    _________________________________________________________________
    conv2d_2 (Conv2D)            (None, 32, 32, 32)        9248      
    _________________________________________________________________
    max_pooling2d_1 (MaxPooling2 (None, 32, 16, 16)        0         
    _________________________________________________________________
    flatten_1 (Flatten)          (None, 8192)              0         
    _________________________________________________________________
    dense_1 (Dense)              (None, 512)               4194816   
    _________________________________________________________________
    dropout_2 (Dropout)          (None, 512)               0         
    _________________________________________________________________
    dense_2 (Dense)              (None, 10)                5130      
    =================================================================
    Total params: 4,210,090
    Trainable params: 4,210,090
    Non-trainable params: 0
    _________________________________________________________________
    None
    Train on 50000 samples, validate on 10000 samples
    Epoch 1/25
    2017-06-17 08:55:41.662236: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
    2017-06-17 08:55:41.663359: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
    2017-06-17 08:55:41.663384: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
      288/50000 [..............................] - ETA: 707s - loss: 2.3271 - acc: 0.1076

    연산 시간이 CPU 최신 기술로 줄어든다는데, 전에 해보렸으나 적당한 tutorial이 없어 못했다. 그러던 중, 아래 사이트를 찾았다.
    텐서플로우, 직접 소스코드 빌디하여 설치하기

    정리하면..

    1. Git에서 clone으로 다운로드
      $ git clone https://github.com/tensorflow/tensorflow
      $ cd tensorflow
      $ git checkout r1.2  #r은 release..적용 버전이 1.2
    2. tensorflow을 컴파일하기 위한 Bazel 설치
      세가지 방법으로 Bazel 설치 가능하다. 나는 debian을 사용하므로, compile 했다.

      1. Install required Package
        apt-get install pkg-config zip g++ zlib1g-dev unzip
      2. Download..
      3. 실행 권한을 주고 run
      4. bazel 경로를 PATH 변수에 추가
        export PATH="$PATH:$HOME/bin"
    3. tensorflow 컴파일 옵션 설정..configure..
      #아까 다운로드 받은 tensorflow 디렉토리에서..
      ./configure
    4. Bazel로 빌드하기
      bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

      –config=opt 옵션이 아까 경고 부분을 해결한다.

    5. Pip 설치용 whl 만들기
      $./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

      bazel-bin이 링크다. 경로를 잘 확인한다. 패키지 파일을 /tmp 디렉토리에 넣어야 되는지 모르겠다.

    6. conda 가상 환경 활성화..
    7. 기존 tensorflow 설치버전 무시하고 설치
      (tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL

      tfBinaryURL이 아까 만든 /tmp/tensorflow_pkg의 whl 경로이다.

    설치 후, python을 다시 실행하면 해당 메세지가 없어졌다.

    (tensorflow) now0930@:cifar10$ python cifar10_testv1.py 
    Using TensorFlow backend.
    Couldn't import dot_parser, loading of dot files will not be possible.
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    conv2d_1 (Conv2D)            (None, 32, 32, 32)        896       
    _________________________________________________________________
    dropout_1 (Dropout)          (None, 32, 32, 32)        0         
    _________________________________________________________________
    conv2d_2 (Conv2D)            (None, 32, 32, 32)        9248      
    _________________________________________________________________
    max_pooling2d_1 (MaxPooling2 (None, 32, 16, 16)        0         
    _________________________________________________________________
    flatten_1 (Flatten)          (None, 8192)              0         
    _________________________________________________________________
    dense_1 (Dense)              (None, 512)               4194816   
    _________________________________________________________________
    dropout_2 (Dropout)          (None, 512)               0         
    _________________________________________________________________
    dense_2 (Dense)              (None, 10)                5130      
    =================================================================
    Total params: 4,210,090
    Trainable params: 4,210,090
    Non-trainable params: 0
    _________________________________________________________________
    None
    Train on 50000 samples, validate on 10000 samples
    Epoch 1/25
    

    설치하기 전에는 속도가 많이 빨라질 것이라 기대 했으나..별 차이 없어보인다.

  • 세계의 우주 클럽

    세계의 우주 클럽

    우주 클럽이란 우주비행 기술 역량을 실질적으로 입증한 국가들의 비공식 연합이다..중략..다음과 같은 조건에 따라 결정된다.

    • 자국의 추진 로켓으로 발사했는가?
    • 자국의 인공위성인가?
    • 자국의 우주 기지에서 발사했는가?

    위 문구가 국제적인 기준인지 확인 안된다. 다음 표가 다음 장에 있다.

    스페이스 클럽

    그러나 spacefairing으로 검색하면, Spacefairing가 아래로 정의한다.

    To be spacefaring is to be capable of and active in space travel or space transport, the operation of spacecraft or spaceplanes.

    가입된 국가 역시 다르다. 북한이 가입되어 있다!!

    제목을 이렇게 짓지말고, “세계의 로켓 발사 역사”정도로 정했으면 했다. 암튼, 이 책이 구소련, 미국, 유럽, 일본..등이 어떻게 로켓을 개발했는지를 너무 자세하게 설명한다.

    목차
    들어가는 말
    1. 러시아 – 우주시대의 서막
    2. 미국 – 최고의 자리를 노리다
    3. 유럽 – 제3의 길을 찾다
    4. 일본 – 아시아의 강자
    5. 중국 – 우주에 울려퍼진 동방홍
    6. 인도 – 역경을 넘어 우주로
    7. 이스라엘 – 공포를 극복하기 위한 도전
    8. 이란 – 이슬람 세계의 선구자
    9. 대한민국 – 10번째 우주 클럽에 도전하다
    10. 세계 우주 클럽의 후보국들
    나가는 말

    책이 2010년에 출판되었는데, 한국이 그 때 한참 로켓을 발사하니 마니했다. 게다가 한국이 10번째 우주 클럽어쩌구 하는 목차를 보면, 냄새가 난다. 내용 역시 독자에게 불친절하다. 작가가 전혀 독자를 고려하지 않는다. 너무 세세한 기술 위주로 설명하는데, 나는 왜 그런 기술을 필요로하는지를 모르겠다. 각 국가 특징이 다른데, 그냥 나열식이다. 번역자가 그 기술을 제대로 아는지 의문이다. 출판사가 시기에 맞춰 대략 출판한 책으로 판단된다.

    때려 치고, “노력하면 언젠가 발사체를 만들수 있다”가 결론이다. 과거 개발국이 로켓을 폭파되는 사고에도 성공했다. 역사가 발사체 개발 실패 비용을 감수할 만한 의지가 있는지 묻고있다.

  • Wiring Guide, Common Mode and counter-measures

    Sorry you have no rights to view this post!

  • 녹

    소리 없이 인류의 문명을 위협하는 붉은 재앙

    이런 자극적인 문구가 책 표지에 조그많게 적혀있다. 이런 문구를 표지에 왜 넣었을까? 내가 살면서 녹으로 인한 불편을 겪지 않아, 녹이 우리 생활과 멀리 있어 보인다. 가장 가까운 부분이 차량의 녹 정도이다.

    그러나 저자가 녹과 전쟁을 수행하는 전사의 마음으로 책을 썼다. 자유의 여신상 보수, 스테인레스 강 개발, 어려운 캔 개발 과정 등 우리 삶을 위협하는 녹의 피해를 썼다. 이 책이 인용한 앨런 와이즈먼의 “인간없는 세상”이 인류의 손길없이 20년이 지나면 맨해튼 동부의 철교가 주저 앉는다고 한다. 그만큼 녹이 철로 구성된 문명에 치명적이다. 녹과의 전쟁이 철기 시대부터 시작됐고, 산업 혁명 시기부터 철이 다양한 구조물에 적용되며, 전쟁이 심해졌다.

    전쟁이 심해지면서 보수 비용이 급격하게 늘었다. 자유의 여신상 보수 프로젝트, 녹으로 인한 미군 무기 유지비 증가, 음료를 캔으로 보관하기 등이 예로 설명되었다. 음료를 캔에 넣기위해 인류가 사용한 100년 넘는 기간이 그 일이 얼마나 어려운지 설명한다. 아무것도 아닌데, 100년의 삽질이라니!! 여러 분야중 특히 군대가 캔없이 운용이 안된다. 적보다 먼저 보급을 해결하기 위한 절박함이 느껴졌다. 지금 캔 제작 기술이 더 발전할 여지가 없는 수준이라고 한다.

    던 마이어가 군대 무기에 발생하는 녹으로 인한 비용을 줄이기 위한 노력도 눈여겨 볼만한다. 그의 성곡적인 녹 방지 프로젝트가 유지 비용을 무기 개발 비용에 포함시켰다. 녹으로 인한 미군 피해 비용이 스웨덴의 국가 GDP와 비슷하다. 이를 알면 미군이 북한을 얼마나 우습게 보는지 예측 가능하다. 녹 대 (군대)유지비 전쟁을 이기기 위해 그가 STEM 과정을 시작했다. 다른 국가가 부러워하는 프로그램이 이렇게 전혀 교육과 관계없이 시작되었다. STEM이 그 후 미국에 미친 영향을 보면 우연이 역사를 만든다.

    미국인 삶이 다른 국민보다 모험적이다. 위험을 감수한 새로운 시도가 신물질에 대한 객관적인 기준을 만들고, 그 기준이 부담없이 세계로 퍼졌다.

  • 근대 엔지니어의 탄생

    근대 엔지니어의 탄생

    18, 19세기 엔지니어가 세상에 어떻게 나왔는지 설명한다. 책을 펴고 머리말을 보면, 작가가 상당히 긴 분량을 썼다. 작가가 머리말 한 개의 장으로 4개 장을 요약하기 위해 고민을 많이 했을 것이라 생각된다. 내가 본문을 보니, 작가가 2,3개 논문을 하나의 본문으로 요약했다. 즉 내용이 일반 대중의 관심사와 거리가 좀 있다. 독자가 머리말만 읽고 본문을 읽지 않아도 괜찮아 보인다.

    머리말이 근대 4개국-독일, 프랑스, 영국, 미국-의 엔지니어 탄생 과정을 설명했다. 몇 개 기준이 4개국의 차이점을 나타낸다.
    1. 국가가 주도적인가? 민간이 주도적인가?
    2. 공교육이 엔지니어를 배출 했는가? 사교육이 했는가?
    엔지니어 집단이 어떻게 만들어 졌는기를 마지막에 공통적으로 설명한다.

    프랑스와 독일에서 국가가 엔지니를 양성하는데 방향을 잡았다. 이에 비해 영국에서는 엔지니어가 민간에서 스스로 생겨났다. 미국이 엔지니어 양성을 위한 정책을 만들었고, 이 영향으로 그들의 숫자가 많았다.

    civil engineer가 왜 토목공학을 말하는지, 이 책이 설명한다. 과거 군대의 공병만이 토목, 건축의 앞선 기술을 가지고 있었다. 이 집단이 군 엔지니어이다. 후에 토목 공사의 수요가 증가되어 민간이 이를 담당했다. 이들이 군 엔지니어와 자신을 구분하기 위해 스스로 civil engineer라고 불렀다. 이 시기 민간 엔지니어가 하는 일 대부분이 토목 공사였고, 자연스럽게 단어가 형성 되었다.

    토목 공학 다음 기계 공학자가 기계 수요 증가로 생겨났다. 이로 보면 토목과 기계 엔지니어가 근대 엔지니어를 대표한다.

    지금의 엔지니어는 수학으로 무장한 엘리트 집단이지만, 과거 그들은 그렇지 않았다. 사회적으로 엔지니어의 위치가 노동자와 비슷하거나 약간 높았다. 이후 수요 증가가 그들을 집단화 시켰고, 그들 스스로 역할을 정의했다.