목록개발 및 공부 (189)
NeuroWhAI의 잡블로그
https://en.cppreference.com/w/cpp/language/fold #include using namespace std; template int binaryRightFold(TArgs&&... args) { return (args - ... - 10); } template int binaryLeftFold(TArgs&&... args) { return (10 - ... - args); } int main() { cout
https://en.cppreference.com/w/cpp/thread/lock_tag https://en.cppreference.com/w/cpp/thread/lock_tag_t mutex 헤더에 정의되어 있는 이 3개의 lock tag들은 mutex를 받는 표준 라이브러리 함수나 객체가 해당 mutex를 어떻게 취급할지 지정할 수 있게 해줍니다. defer_lock : 뮤텍스를 잠그지 않습니다. try_to_lock : 뮤텍스를 잠그려고 시도합니다. (이미 잠겨있다면 대기하지 않고 실패합니다) adopt_lock : 이미 뮤텍스가 현재 스레드에 의해 잠겨있다고 가정합니다. (=잠그지 않습니다) 이걸 어디다 쓰느냐... 하실 수 있지만 생각해봅시다. 두 뮤텍스 a, b를 한번에 잠궈야할 일이 생긴다고..
https://play.rust-lang.org/?gist=99e193ae58efd33a65408ef3aea41980&version=stable&mode=debug&edition=2015 fn main() { // exclusive range for x in 0..5 { print!("{} ", x); } println!(); // inclusive range for x in 0..=5 { print!("{} ", x); } println!(); /*for x in 0...5 { print!("{} ", x); } println!();*/ //error: `...` syntax cannot be used in expressions let x = 42; match x { 0...42 => println!(..
7월 18일에 구매한지 한 달도 안되었는데 다 읽었네요. 제가 이런류 책은 잘 안읽어서 그런지 몰라도 정말 신선했고 읽기 잘했다는 생각이 들었습니다. 인공지능의 미래에 대해 좀 더 넓고 깊게, 잘 생각해보고 싶은 사람이거나 기자라면 필독해야 할 책이 아닐까 싶습니다. (제가 전문가는 아니지만요 ㅋㅋ) 저자가 인공지능과 생명의 미래를 위해 직접 단체(참여자 스펙이 대단합니다)도 만들어 활동하고 있으니 더욱 신뢰도가 높습니다. 이 책은 처음부터 끝까지 모든 일에 대해 가능성을 열어두고 왜 가능성을 열어두는지, 어떻게 대비할 수 있을지, 그 대비책은 또 어떻게 회피될 수 있을지 말해줍니다. 또한 우리가 어떻게 생각하고 행동해야 하는지 계속해서 주장하고 설득합니다. 몇 개의 단편으로 가상 시나리오도 포함되어 있..
※ 아래 내용은 스택오버플로의 글을 공부하고 정리한 내용이므로 틀린 내용이 있을 수 있습니다. 템플릿 메타프로그래밍을 이용해서 특정 타입에 특정 멤버가 있는지 컴파일 타임에 확인할 수 있는 방법이 있습니다.일단 코드부터 보시죠. #include #include template struct has_member_foo : std::false_type { }; template struct has_member_foo : std::true_type { }; class Bar { public: int bar; }; class Foo { public: explicit Foo(int); int foo; }; int main() { using namespace std; cout
C++을 오래전 처음 배우면서 기본 인수(혹은 디폴트 매개변수, 기본 매개변수)라는 문법을 봤었고 "음 간단하네"라고 생각하며 자주 사용해왔었습니다. 그러나 오늘 어떤 글을 보게 되었고 기본 인수 문법에 대한 이해도가 더 오르게 되었습니다. 정리하고자 글을 씁니다. int sum(int a, int b = 2) { return a + b; } int main() { cout
코틀린 강좌를 조금씩 보고 있습니다.앱 개발을 하고 싶기에...다만 사정상 안드로이드 에뮬레이터를 돌리기가 힘들어서 진짜 앱 개발 공부는 힘들고언어만 좀 배워두려고 합니다.아래는 끄적여본 첫 코틀린 코드 ㅎㅎ.. package com.neurowhai fun sum(a: Int, b: Int) = a + b fun getStringLengthIfCan(obj: Any): Int? { return if (obj is String) { obj.length } else { null } } fun stringWhatever(obj: Any): String = when (obj) { 1 -> "One" "What" -> "??" is Int -> "is Int" else -> "wtf?" } fun main(ar..
※ 실제로 동작하는 전체 소스코드는 GitHub에서 보실 수 있습니다. (가중치 초기화 방법들(Xavier, He)은 코드로 구현은 하였지만 글은 넘어갑니다.) 드롭아웃은 오버피팅(과적합)을 방지하기 위해서 순전파시 일정 확률로 특정 출력값을 0으로 만들고 역전파시에도 기울기의 해당 부분들을 0으로 만들어서 보냅니다. 보통 일정 확률로 신경망의 뉴런을 비활성화한다 혹은 끈다고 설명합니다. 학습이 좀 느려진다는 단점은 있지만 쉽게 과적합을 어느정도 이겨낼 수 있습니다. 비슷하게 배치정규화라는 놈도 과적합을 방지해주지만 이건 학습 속도가 훨씬 빠릅니다. 아래 코드는 드롭아웃 계층을 어떻게 구현했는지만 넣어놨습니다. 코드: impl Layer for Dropout { fn forward(&mut self, x..
케라스로 MNIST 데이터를 학습시키고 외부 이미지 하나를 불러와서 무슨 숫자인지 출력해보는 예제입니다.기본적으로 CNN이고 배치정규화, 드롭아웃을 추가로 사용했습니다. 이미지는 무조건 input.png라는 이름으로 작업 경로에 존재해야 하고 28x28 크기여야 합니다.배경은 검은색, 숫자는 흰색으로 그리세요.input.png가 없으면 구글 드라이브에서 테스트 이미지를 다운로드하는데 번거로우니 그냥 직접 그리세요. 미리 학습된 가중치 데이터를 원하시면 아래 링크에서 받으시고 작업 경로에 넣어주세요. 코드: # !pip install -U -q PyDrive import sys import os.path import numpy as np import keras from keras import layers,..
https://stackoverflow.com/questions/28519997/what-are-rusts-exact-auto-dereferencing-rules 위 글을 공부하여 정리한 글입니다. Rust에서 x.bar()처럼 메소드를 호출하는건 T::bar(x)와 같은데 이때 bar의 self와 x가 일치하지 않으면 auto-dereferencing rules이 수행됩니다. 설명하기 전에 단어, 문자 용어 정리하고 하겠습니다. Receiver type : 메소드의 self 타입 (Self가 Foo이고 fn bar(&self);라면 &Foo가 됩니다. Self가 &Foo이고 fn bar(self);여도 &Foo.) x : 메소드의 self로 들어갈 값 T : x의 타입 U : 각 역참조 단계에서의 타입..