본문 바로가기
만들면서 배우는 파이토치 딥러닝 이 글은 한빛미디어 도서 서평단 나는 리뷰어다 2021을 통해 책을 제공받아 작성하였습니다. 이 책은 번역서 '만들면서 배우는 파이토치 딥러닝(오가와 유타로 지음, 한빛미디어)' 입니다. 이 책은 딥러닝의 기초 지식을 넘어 응용하는 방법을 다루고 있습니다. 전이학습을 활용하는 방법, 이미지 분류와 감지, 이미지 분할, 자세 추정, GAN 등을 활용하는 방법을 알 수 있으며, 텍스트 데이터 분석, 동영상 분류를 배울 수 있습니다. 또한 실제로 활용하기 위해 클라우드 환경을 설정해 응용 프로그램을 만드는 방법을 가르쳐 줍니다. 딥러닝 기술을 엔지니어 측면에서 응용해 구현하여 문제를 해결하는 방법을 알 수 있습니다. 2021. 9. 22.
스마트 포인터 스마트 포인터(smart pointer)는 객체를 소요하며, 스마트 포인터의 생명주기는 객체와 같거나 길어야 한다. scoped pointers stdlib에 있는 포인터가 아니다. boost/smart/scoped_ptr.hpp에 있다. scoped pointer는 어떤 스코프(scope)에서 다른 스코프로 옮겨질 수 없다.(non-transferable) 그리고 객체를 복사할 수 없으며(exclusive ownership), 다른 스마트 포인터가 스코프 포인터의 동적 객체의 소유권을 가질 수 없다. boost::scoped_ptr my_ptr{ new PointedToType }; 보통 다아나믹 객체를 new를 이용해 생성한 다음, 위처럼 생성자에게 넘겨 준다. unique pointer transf.. 2021. 9. 4.
텐서플로 라이트를 활용한 안드로이드 딥러닝 이 글은 한빛미디어 도서 서평단 나는 리뷰어다 2021을 통해 책을 제공받아 작성하였습니다. 이 책은 번역서 '텐서플로 라이트를 활용한 안드로이드 딥러닝(임태규 지음, 한빛미디어)' 입니다. 이 책은 텐서플로 라이트를 이용하여 인공지능 딥러닝 모델을 안드로이드 기기에 배포하는 것까지를 다루고 있습니다. 이 과정에서 딥러닝 모델에 대해 소개해 주며, 안드로이드 컴포넌트에는 어떤 것이 있는지 UI는 어떻게 구성할 것인지 코드를 보여주면 해당 코드에 대한 상세한 설명으로 알려 줍니다. 또한 여기에 그치지 않고 실제 서비스 가능하도록 딥러닝 모델은 어떻게 최적화 시켜야 하며, 텐서플로 라이트 모델을 배포할 때는 어떤 최적화들을 이용할 수 있는지 자세히 실험을 하며 해당 결과를 제시해 줍니다. 이 책의 목차와 함.. 2021. 8. 22.
C++ explicit implicit type conversion을 막아준다. #include class A { public: int num; A(int n) : num(n) {}; }; void printA(A a) { std::cout 2021. 8. 18.
C++ const_cast, static_cast, reinterpret_cast named conversion을 이용해 하나의 타입에서 다른 타입으로 명시적으로 형변환을 할 수 있다. 보통 implicit conversion을 사용하지 못할 때 쓴다. 대개 아래와 같은 형식을 취한다. named-conversion(object-to-cast) const_cast const 변수를 받아 const를 벗겨준다.(cast away) void carbon_thaw(const int& encased_solo) { //encased_solo++; // Compiler error; modifying const auto& hibernation_sick_solo = const_cast(encased_solo); hibernation_sick_solo++; } const_cast를 이용해 volati.. 2021. 8. 18.
C++ copy and move constructor, assignment 이 글에서는 C++의 copy semantic과 move sematic에 대해서 알아봅니다. 객체(object)를 복사(copy)하는 방법에는 copy constructor, copy assignment 두 가지 방법이 있다. 먼저 '복사'의 의미를 알아보자. 객체 x를 객체 y로 '복사'한다는 것은 두 객체가 동등(equivalent)하지만 독립적(independent)이라는 뜻이다. 즉, 복사 후에 x == y이지만, 객체 x에 대한 수정은 객체 y에 영향을 주지 않는다. 예를 들어, 객체를 함수의 인자에 값으로 넘겨줄 때(pass by value) 복사가 일어난다. #include int add_one_to(int x) { x++; return x; } int main() { auto origina.. 2021. 8. 18.
자바스크립트 비동기, Promise, async, await 웹 브라우저에서 동작하는 자바스크립트 프로그램은 어떤 동작을 하기 전에 사용자의 클릭을 기다리는 이벤트를 중심으로(event-driven) 동작한다. 네트워크를 통해 데이터를 전달 받거나 클릭과 같은 어떤 이벤트가 발생하기 전에 프로그램은 계산 과정을 멈추는 비동기(asynchronous)적으로 동작할 필요가 있다. 프로미스(Promise)는 ES6에서 도입되었으며, 비동기 연산의 미래의 결과를 나타내는 객체이다.(결과를 바로 사용할 수도 있고, 사용하지 못할 수 도 있다) async와 await은 ES2017에서 도입되었으며, Promise로 비동기를 구현하는 코드를 마치 동기(synchronous) 프로그램을 작성하는 것처럼 간단히 비동기 프로그램을 작성할 수 있도록 만들어 준다. asynchrono.. 2021. 8. 17.