목록개발 및 공부 (189)
NeuroWhAI의 잡블로그
※ 이 글은 '골빈해커의 3분 딥러닝 텐서플로맛'이라는 책을 보고 실습한걸 기록한 글입니다. 이론적인 설명은 저도 여기서 공부하면 될것 같고 그냥 책에 나온대로 따라만 해봤습니다. 이번엔 이미 만들어진 모델을 사용하는거라서 아래의 단계로 진행되었습니다. 학습할 꽃 데이터 다운로드 Inception 모델을 학습시키는 스크립트 다운로드 꽃 데이터로 모델 학습 학습된 모델을 불러와서 사용 이 글에는 4번 단계만 적었습니다. 모델을 불러와서 사용하는 코드: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#-*- coding: utf-8 -*- import sysimport tensorflo..
이전글에서 DCGAN을 만들면서 tf.layers.batch_normalization을 사용하게 됬는데 training 옵션이 False일땐 잘 되면서 True일땐 학습하지 않은 결과만 못한 출력을 내더라고요. 이것저것 검색하다가 결국 공식 문서에 해답이 있다는걸 알았습니다. training시에 moving_mean과 moving_variance는 수동으로 업데이트 해줘야한다고 합니다. 기본적으로 갱신연산(update op)들은 UPDATE_OPS 키에 속하고 이걸 학습연산(train op)의 종속성에 추가해주면 된다고 합니다. 그 방법이 위 사진의 코드에 해당합니다. (신경망 구현 코드를 다 작성한 뒤) update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)..
저번에 했다가 실패했다고 말씀드렸었는데 이번에 어느정도 성공했습니다! (이전 글) 코드: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132#-*- coding: utf-8 -*- import tensorflow as tfimport numpy a..
아시겠지만 Rust에서 trait을 반환형으로 지정하려면 아래처럼 Box같은 Sized struct를 사용해야 합니다. 12345678fn even_iter() -> Box { Box::new((0..).map(|n| n * 2))} fn main() { let first_four_even_numbers = even_iter().take(4).collect::(); println!("{:?}", first_four_even_numbers);}Colored by Color Scriptercs 하지만 아직 stable 버전엔 없는 conservative_impl_trait라는 기능을 사용하면 약간의 수정으로 trait을 반환형으로 지정할 수 있습니다. 공식 문서에 따르면 약간의 성능상 이익도 있다는 것 같습..
공식 문서 : https://doc.rust-lang.org/std/primitive.str.html#method.matches 예시: 1234567891011121314fn count(value: &str, substr: &str) -> usize { value.matches(substr).count()} fn pick_num(value: &str) -> Vec { value.matches(char::is_numeric).collect()} fn main(){ println!("Count : {}", count("aabcd abaaz zaazxcaxa", "aa")); println!("Numbers : {:?}", pick_num("1a23bc4d"));} Colored by Color Scripte..
※ 이 글은 '골빈해커의 3분 딥러닝 텐서플로맛'이라는 책을 보고 실습한걸 기록한 글입니다. 코드: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109#-*- coding: utf-8 -*- import sysimport tensorflow as tfimport numpy as np char_arr = [c for c in 'SEPabcdefghijklmnopqrstu..
이해하기 더럽게 힘드네요. tf.layers.dense는 densely-connected layer, 즉 아래 사진처럼 흔히 보이는 '완전연결계층'을 만들어줍니다. 출처 : https://www.slideshare.net/ssuser77ee21/convolutional-neural-network-in-practice 텐서플로 책을 보면서 이정도만 알아도 문제가 없었는데 Seq2Seq 예제에서 3차원 input을 dense에 넘기는 코드를 보고 어떻게 이게 가능한지 이해가 안됬습니다. 이전엔 (batch, input size)차원의 입력만 사용해서 내부 가중치 행렬인 kernel은 (input size, output size)차원이겠고 matmul로 행렬곱 연산하는거겠지 했는데 아닌거였습니다. Seq2Se..
※ 이 글은 '골빈해커의 3분 딥러닝 텐서플로맛'이라는 책을 보고 실습한걸 기록한 글입니다. 아주 간단한 예시입니다. 4글자로 된 단어가 있을때 앞의 3글자만 보고 마지막 글자를 예측하는 신경망을 설계합니다. 예) 'wor' -> 'd' 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ..
https://doc.rust-lang.org/std/primitive.str.html#method.matches 1 2 fn matches(&self, pat: P) -> Matches where P: Pattern cs 대충 이렇게 생긴 str에 있는 메소드 입니다. 입력으로는 Pattern을 받는데 일단 &str, char, 클로저를 넣을 수 있습니다. Pattern에 관해서는 나중에 공부해서 올려보겠습니다. Matches를 반환하는데 요놈이 Iterator를 구현하고 있으므로 결과를 다양하게 사용할 수 있습니다. 아래처럼 collect부터해서 count로 개수를 알수도 있고 각 값을 따로 처리할수도 있습니다. 1 2 3 4 5 let v: Vec = "abcXXXabcYYYabc".matches(..
책에서 RNN이 나왔습니다. RNN은 시계열 데이터에 적합하다고 하니까 사실 MNIST에는 맞지 않는게 아닌가 싶습니다. 대신 한 이미지를 여러줄로 나눠 윗줄부터 하나씩 입력한다는 형식으로 RNN과 호환성?을 맞췄습니다. 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #-*- coding: utf-8 -*- import tensorflow as tfimport numpy as np from tenso..