├── .gitignore ├── Object_Detection_API ├── README.md ├── Step01.md ├── Step02.md ├── Step03.md ├── Step04.md ├── Step05.md ├── image │ ├── step_01_01.png │ ├── step_01_02.png │ ├── step_01_03.png │ ├── step_01_04.png │ ├── step_01_05.png │ ├── step_01_06.png │ ├── step_01_07.png │ ├── step_01_08.png │ ├── step_02_01.png │ ├── step_02_02.png │ ├── step_03_01.png │ ├── step_03_02.png │ ├── step_03_03.png │ ├── step_03_04.png │ ├── step_03_05.png │ ├── step_03_06.png │ ├── step_03_07.png │ ├── step_03_08.png │ └── step_04_01.png └── script │ ├── generate_tfrecord.py │ └── xml_to_csv.py ├── README.md └── Tutorial ├── Estimator ├── MNIST_data │ ├── t10k-images-idx3-ubyte.gz │ ├── t10k-labels-idx1-ubyte.gz │ ├── train-images-idx3-ubyte.gz │ └── train-labels-idx1-ubyte.gz └── mnist_tfrecord.ipynb ├── GAN └── notebook │ └── Vanilla_GAN.ipynb └── nn └── Linear_Regression.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | *.ipynb_checkpoints 3 | *tmp 4 | -------------------------------------------------------------------------------- /Object_Detection_API/README.md: -------------------------------------------------------------------------------- 1 | # TensorFlow Objet Detection API 사용법 2 | 3 | 4 | --- 5 | 6 | 2018.09.12 7 | 8 | 제작 : **카카오톡 오픈채팅방** [V.ais](https://open.kakao.com/o/ghU9D1o) 9 | 10 | - 저자 : **흔공/로봇 비전/연구원** [명함 링크](https://open.kakao.com/me/kape67) 11 | 12 | - 편집 : **Jerry/의료영상/석사과정** [명함 링크](https://open.kakao.com/o/s1BnRpH) 13 | 14 | --- 15 | 16 | 이 사용법은 크게 5 단계, 작게는 10 단계로 구성되어 있습니다. 17 | 18 | 최대한 입문자도 이해하기 쉽게 적으려고 노력했습니다. 19 | 20 | 개선했으면 하는 사항 또는 수정되었으면 하는 사항에 대해서 명함 링크로 연락을 주시거나 [**이슈 등록**](https://github.com/V-AIS/tensorflow/issues)을 해주세요. 21 | 22 | 감사합니다. 23 | -------------------------------------------------------------------------------- /Object_Detection_API/Step01.md: -------------------------------------------------------------------------------- 1 | # TensorFlow Object Detection API 사용법 2 | 3 | 4 | ## Step 1 설치 및 test 5 | 6 | window 7 | 8 | 먼저 tensorflow models 를 github에서 받는다. 9 | 10 | 링크는 [https://github.com/tensorflow/models](https://github.com/tensorflow/models) 11 | 12 | 아래 사진과 같이 오른쪽에 초록색 버튼을 눌러 Download ZIP를 한다. 13 | 14 | 15 | 16 | models-master.zip 이름으로 받아질텐데 models.zip 로 이름을 바꾸자 17 | 18 | 19 | 20 | [https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md) 21 | 에 들어가면 install 하는 방법이 나와 있다. 22 | 23 | Dependencies를 다 깔아야 한다. ( 밑에 사진 참고 ) 24 | 25 | 26 | 27 | cmd 창을 키고 아래와 같이 쳐 준다. cmd는 윈도우키 + R 을 누른 후, cmd 를 치고 엔터를 누르자 28 | 29 | ``` cmd 30 | > pip install --user pillow 31 | > pip install --user lxml 32 | > pip install --user matplotlib 33 | > pip install --user Cython 34 | > pip install --user contextlib2 35 | ``` 36 | 37 | ( window는 sudo 명령어가 안먹힐것이다. 만약 sudo를 하고 싶다면 프로그램을 킬때 '관리자 권한으로 실행'을 하자 ) 38 | 39 | **Protobuf 설치** 40 | 41 | proto compilation은 [https://github.com/google/protobuf/releases](https://github.com/google/protobuf/releases) 에 들어가서 자신에 맞는 환경의 파일을 다운받는다. 42 | 43 | 본인은 protoc-3.4.0-win32.zip 을 다운 받았다. (3.5를 사용할 경우 문제가 생길 수 있음.) 44 | 45 | 압축을 풀면 bin, include 폴더 2개가 나온다. 46 | 47 | 그리고 환경설정에 path를 추가해주자. window에서는 환경설정을 따로 해줘야한다. 48 | 49 | '내컴퓨터' 오른쪽클릭 -> '속성' 클릭 -> 왼쪽탭에 '고급 시스템 설정' 클릭 -> 위 '고급' 탭 클릭 -> 아래에 '환경변수' 클릭 -> 50 | '환경변수' 창 아래쪽 '시스템 변수' 에서 'path' 클릭 -> 아래 '편집' 클릭 -> '환경 변수 편집'창 오른쪽 '새로 만들기' 클릭 -> 51 | [자신이 proto 파일 받고 압축 푼 경로]\bin ( 본인은 D:\Jeongho\util\protoc\bin ) -> '확인' 클릭 -> 완료 52 | 53 | 54 | 55 | 56 | 57 | 윈도우에서 환경 설정에 path를 추가하는 방법은 위와 같으니 꼭 알아두자. 58 | 59 | 커맨드 창에서 models\research 폴더로 들어간 후 아래 protoc 명령어를 넣자 60 | 61 | ``` cmd 62 | > cd models\research 63 | > protoc object_detection\protos\*.proto --python_out=. 64 | ``` 65 | 66 | **cocoapi 설치** 67 | 68 | 우선 cocoapi 를 설치하기 전, window 에서 make를 할 수 있는 툴을 설치해야 한다. 69 | 70 | 우리는 gnuwin32를 설치할 것이다. 71 | 72 | [http://gnuwin32.sourceforge.net/downlinks/make.php](http://gnuwin32.sourceforge.net/downlinks/make.php) 73 | 74 | [http://gnuwin32.sourceforge.net/downlinks/make-src.php](http://gnuwin32.sourceforge.net/downlinks/make-src.php) 75 | 76 | 위 두 링크를 통해 설치파일을 다운받고 설치하자. 77 | 78 | 그리고 환경설정에 path를 추가해주자. window에서는 환경설정을 따로 해줘야한다. 79 | 80 | '내컴퓨터' 오른쪽클릭 -> '속성' 클릭 -> 왼쪽탭에 '고급 시스템 설정' 클릭 -> 위 '고급' 탭 클릭 -> 아래에 '환경변수' 클릭 -> 81 | '환경변수' 창 아래쪽 '시스템 변수' 에서 'path' 클릭 -> 아래 '편집' 클릭 -> '환경 변수 편집'창 오른쪽 '새로 만들기' 클릭 -> 82 | C:\Program Files (x86)\GnuWin32\bin -> '확인' 클릭 -> 완료 83 | 84 | 이렇게 하면 gnuwin32 는 끝났다. cocoapi를 설치해 보자. 85 | 86 | [https://github.com/cocodataset/cocoapi](https://github.com/cocodataset/cocoapi) 이 링크로 들어가 아까처럼 다운받고 이름 뒤에 '-master'를 지우고 저장, 압축 풀기 87 | cmd 창에서 cocoapi\PythonAPI 폴더로 들어간 후 빌드를 해 주는게 맞는데... 그대로 하면 에러가 뜬다. 88 | 89 | 90 | 91 | 이 에러가 뜨면 C:\Program Files(x86)\Windows Kits\8.1\bin\x86 에서 rc.exe 와 rcdll.dll 2개의 파일을 92 | C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\bin 에 복사 93 | 94 | 그리고 cocoapi\PythonAPI 폴더에 들어가면 setup.py 파일이 있는데, 95 | **12 line** *extra_compile_args =['-Wno-cpp', '-Wno-unused-function', '-std=c99']*, 를 주석처리 ( 이 줄 맨 앞에 # 를 추가하거나 라인 전체를 지우면 된다) 96 | 바로 밑에 *extra_compile_args=['std=c99']* 를 추가해 주면 된다. 97 | cmd, 커맨드 창에서 98 | 99 | ``` cmd 100 | > cd cocoapi\PythonAPI 101 | > make 102 | ``` 103 | 104 | 105 | 106 | 가 뜨면 완료! 107 | 108 | 109 | 110 | 이런 에러가 뜨면 맨 위에 C:\msys64\usr\bin\make.exe 에서 msys64에 대한 path가 추가되어 있을 수 있다. 111 | 112 | path에서 msys64 관련 경로를 지워보자. 113 | 114 | 이후 cocoapi\PythonAPI 폴더 안에 생긴 pycocotools 폴더를 \models\research\ 로 복사. 115 | 116 | 여기까지 하면 dependencies를 모두 설치 완료! 117 | 118 | 이제 라이브러리를 추가해보자. 119 | 120 | '내컴퓨터' 오른쪽클릭 -> '속성' 클릭 -> 왼쪽탭에 '고급 시스템 설정' 클릭 -> 위 '고급' 탭 클릭 -> 아래에 '환경변수' 클릭 -> 121 | '환경변수' 창 아래쪽 '시스템 변수' 에서 '새로 만들기' 클릭 -> 변수 이름 : PYTHONPATH -> 변수 값 : [자신이 models 다운받은 경로]\models\research;[자신이 models 다운받은 경로]\models\research\slim -> '확인' -> 완료 122 | 123 | 설치가 완료되었으므로 test를 해보자. 124 | 125 | ``` cmd 126 | > cd models\research 127 | > python object_detection\builders\model_builder_test.py 128 | ``` 129 | 130 | 아무 에러도 안뜨면 성공~! 131 | -------------------------------------------------------------------------------- /Object_Detection_API/Step02.md: -------------------------------------------------------------------------------- 1 | # TensorFlow Object Detection API 사용법 2 | 3 | ## Step 2 image 모으기 4 | 5 | 이건 각자 필요한 image를 모으면 된다. 본인은 Imagenet 에서 받은 dataset으로 training을 하였다. 6 | 7 | **image file의 확장자는 통일할 것!**(이유는 다음 문서에..) 8 | 9 | 본인은 jpg로 통일하였다. 10 | 11 | ## Step 3 각각 Image의 ground truth (bounding box) 만들고 xml로 저장하기 12 | 13 | xml 파일을 만들어 bounding box 의 xmin, xmax, ymin, ymax 와 class, directory 등을 넣어주어야 한다. 14 | 15 | xml파일이 길지 않다면 fopen, fclose를 써서 만들어도 상관없다. 16 | 17 | 만약 길다면 opencv에서 filestorage 클래스를 써서 사용하면 된다. ( 본인은 하다가 중간에 문제가 있어서 .. 그냥 fopen 사용했다 ) 18 | 19 | 본인은 https://github.com/tzutalin/labelImg 에서 다운받아 사용했다. 20 | 21 | 22 | 23 | 사용법은 간단하며 왼쪽 상단에서 8번째 줄에 PascalVOC 로 선택한 후 xml 를 저장하면 된다. 24 | 25 | 26 | 27 | 28 | xml 파일 형식은 위 그림과 같다. 29 | 30 | folder와 filename, size, object 저 안에 들어가는 정보는 꼭 필요하다. 31 | 32 | image 와 xml 을 각 클래스마다 분류한 후, 각 클래스의 10%는 test 폴더에, 나머지 90%는 train 폴더에 넣어 놓자. 33 | 34 | image 와 그 정보를 갖고 있는 xml 파일은 같이 test나 train 폴더에 넣어 놓자. 35 | 36 | 37 | ------------------- 파일 및 폴더 상태 -------------------- 38 | 39 | ( + 폴더, - 파일 ) 40 | 41 | + obj_recog 42 | + images 43 | + train 44 | - train_images 45 | - train_xmls 46 | + test 47 | - test_images 48 | - test_xmls 49 | 50 | 51 | ## Step 4 각 image마다 xml 파일이 있는데 이 파일들을 csv 확장자로 바꿔주기 ( 여러 xml 파일 -> 1개 csv 파일 ) 52 | 53 | 각 image마다 파일 이름이나 bounding box, size 등 정보가 각각 다르다. 54 | 55 | 위 단계에서 이러한 정보들을 1개의 image마다 1개의 xml 파일로 바꿨다. 56 | 57 | xml 파일들을 이제 csv 파일로 전환해보자 ( 多 --> 1 ) 58 | 59 | xml_to_csv.py 파일을 obj_recog 폴더에 다운 받은 후 실행하자. 60 | 61 | 완료가 되면 data 폴더에 train_labels.csv 와 test_labels.csv 파일 2개가 생성된다. 62 | 63 | ----------------------- 파일 및 폴더 상태 ------------------------- 64 | 65 | ( + 폴더, - 파일 ) 66 | 67 | + obj_recog 68 | + data 69 | - train_labels.csv 70 | - test_labels.csv 71 | + images 72 | + train 73 | - train_images 74 | - train_xmls 75 | + test 76 | - test_images 77 | - test_xmls 78 | - xml_to_csv.py 79 | -------------------------------------------------------------------------------- /Object_Detection_API/Step03.md: -------------------------------------------------------------------------------- 1 | # TensorFlow Object Detection API 사용법 2 | 3 | 4 | ## Step 5 csv 파일과 image들을 사용하여 record 확장자로 변환하기 5 | 6 | 1개의 record 파일에는 1개 csv 파일과 여러 image에 대한 정보가 담겨있다. 7 | 8 | generate_tfrecord.py 파일을 다운 받는다. 9 | 10 | 맨 위에 보면 사용방법이 나와있다. 11 | 12 | 13 | 14 | **22 line** 과 **23 line**을 보면 csv_input 과 output_path 를 적어주는 것을 볼 수 있다. 15 | 16 | 이것은 파일 실행시 cmd에서 적어준다. 17 | 18 | **27 line** 에서 class 를 적어준다. 19 | 20 | xml 파일에 class ( object - name ) 를 적을 때 그 단어를 그대로 적어야 한다. 21 | ``` python3 22 | if row_label == 'cantatacoffee': 23 | return 1 24 | elif row_label =='febreze': 25 | return 2 26 | ... 27 | ``` 28 | 29 | 등으로 한다. 30 | 31 | 이것은 자신의 custom class 숫자에 맞게 수정하면 된다. 32 | 33 | 34 | 35 | 36 | **54 line** create_tf_example 함수를 보면 **jpg의 image** 파일을 불러오는 것을 확인할 수 있다. 37 | 38 | 39 | 40 | 41 | 42 | **85 line** main 함수에서 **87 line** 을 보면 images/test 혹은 images/train 을 볼 수 있는데 train 폴더에서 record 파일을 뽑을때는 train으로 맞춰주고 test에서도 똑같이 한다. 43 | 44 | **87 line** path = os.path.join(os.getcwd(), '경로') 에서 뒤에 '경로'를 'images/train'로 수정 후 45 | 46 | ``` bash 47 | $ python3 generate_tfrecord.py --csv_input=data/train_labels.csv --output_path=data/train.record 48 | ``` 49 | 50 | **87 line** path = os.path.join(os.getcwd(), '경로') 에서 뒤에 '경로'를 'images/test'로 수정 후 51 | 52 | ``` bash 53 | $ python3 generate_tfrecord.py --csv_input=data/test_labels.csv --output_path=data/test.record 54 | ``` 55 | 56 | ----------------------- 파일 및 폴더 상태 ------------------------- 57 | 58 | ( + 폴더, - 파일 ) 59 | 60 | + obj_recog 61 | + data 62 | - train_labels.csv 63 | - test_labels.csv 64 | - train.record 65 | - test.record 66 | + images 67 | + train 68 | - train_images 69 | - train_xmls 70 | + test 71 | - test_images 72 | - test_xmls 73 | - xml_to_csv.py 74 | - generate_tfrecord.py 75 | 76 | 77 | ## Step 6 자신이 사용할 model과 config 파일을 다운받고 수정하기 78 | 79 | config 파일에는 model의 hyper-parameter, training_step, training 에 사용할 data 경로 등에 대한 정보가 있다. 80 | 81 | 이를 수정하여 사용하면 된다. 82 | 83 | 일단 자신이 training 할 모델을 선택한다. 84 | 85 | [https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md) 86 | 87 | 위 깃헙을 들어가면 ssd, faster rcnn 등 여러 detector 와 coco, kitti 등으로 학습한 pretrained model을 다운 받을 수 있다. 88 | 89 | 본인은 faster_rcnn_resnet101_coco_2018_01_28.tar.gz 를 다운 받았다. 90 | 91 | [https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs](https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs) 92 | 93 | 위 깃헙에는 다운 받을 수 있는 model_zoo 의 config 파일 sample을 다운받을 수 있다. 94 | 95 | 본인은 faster_rcnn_resnet101_coco_2018_01_28.config를 다운 받았다. 이것을 수정해서 training에 써보자. 96 | 97 | config 파일을 살펴보자. 98 | 99 | 100 | 101 | 102 | **4 line** PATH_TO_BE_CONFIGURED 를 검색해서 반드시 수정하라고 한다. 103 | 104 | **9 line** num_classes: 가 적혀 있는데 자신에 맞는 class 숫자를 적어주면 될 것 같다. 105 | 106 | 107 | 108 | **85 line** batch_size 는 default 로 1로 되어 있다. ( SSD인 경우 24 ) 109 | 110 | **106 line** fine_tune_checkpoint: 자신이 사용할 pretrained_model의 ckpt 파일을 가져오면 된다. 111 | (본인은 "faster_rcnn_resnet101_coco_2018_01_28/model.ckpt") 112 | 113 | 114 | 115 | **116 line** input_path: 자신의 train.record 경로를 적어주면 된다. (본인은 data/train.record) 116 | 117 | **118 line** label_map_path: pbtxt 경로를 적어주면 되는데 일단. (본인은 data/object-detection.pbtxt) 118 | 119 | **130 line** 마찬가지로 input_path: "data/test.record" 120 | 121 | **132 line** label_map_path: "data/object-detection.pbtxt" 122 | 123 | 를 적어주고 저장하자. 124 | 125 | 126 | ----------------------- 파일 및 폴더 상태 ------------------------- 127 | 128 | ( + 폴더, - 파일 ) 129 | 130 | + obj_recog 131 | + data 132 | - train_labels.csv 133 | - test_labels.csv 134 | - train.record 135 | - test.record 136 | + images 137 | + train 138 | - train_images 139 | - train_xmls 140 | + test 141 | - test_images 142 | - test_xmls 143 | - xml_to_csv.py 144 | - generate_tfrecord.py 145 | - faster_rcnn_resnet101_coco_2018_01_28.config 146 | - faster_rcnn_resnet101_coco_2018_01_28.tar.gz 147 | 148 | 149 | ## Step 7 pbtxt 확장자 파일 만들기 ( 각 image의 이름 및 class 정해주기 ) 150 | 151 | pbtxt 는 class의 이름과 id 등을 기입하는 파일이다. 152 | 153 | ``` 154 | item { 155 | name: "cantatacoffee" 156 | id: 1 157 | display_name: "cantatacoffee" 158 | } 159 | item { 160 | name: "febreze" 161 | id: 2 162 | display_name: "febreze" 163 | } 164 | item { 165 | name: "greentea" 166 | id: 3 167 | display_name: "greentea" 168 | } 169 | item { 170 | name: "melona" 171 | id: 4 172 | display_name: "melona" 173 | } 174 | item { 175 | name: "pringlesred" 176 | id: 5 177 | display_name: "pringlesred" 178 | } 179 | item { 180 | name: "pringlesgreen" 181 | id: 6 182 | display_name: "pringlesgreen" 183 | } 184 | item { 185 | name: "topcoffee" 186 | id: 7 187 | display_name: "topcoffee" 188 | } 189 | ``` 190 | 위와 같이 기입한다. 191 | 192 | name은 class name 이고 display_name은 test 시 나오는 이름이다. 193 | 194 | 파일 이름은 data/object-detection.pbtxt 195 | 196 | data 폴더 안에 저장. 197 | 198 | ----------------------- 파일 및 폴더 상태 ------------------------- 199 | 200 | ( + 폴더, - 파일 ) 201 | 202 | + obj_recog 203 | + data 204 | - train_labels.csv 205 | - test_labels.csv 206 | - train.record 207 | - test.record 208 | - object-detection.pbtxt 209 | + images 210 | + train 211 | - train_images 212 | - train_xmls 213 | + test 214 | - test_images 215 | - test_xmls 216 | - xml_to_csv.py 217 | - generate_tfrecord.py 218 | - faster_rcnn_resnet101_coco_2018_01_28.config 219 | - faster_rcnn_resnet101_coco_2018_01_28.tar 220 | -------------------------------------------------------------------------------- /Object_Detection_API/Step04.md: -------------------------------------------------------------------------------- 1 | # TensorFlow Object Detection API 사용법 2 | 3 | 4 | ## Step 8 train 및 tensorboard 사용방법 5 | 6 | ----------------------- 파일 및 폴더 상태 ------------------------- 7 | 8 | ( + 폴더, - 파일 ) 9 | 10 | + obj_recog 11 | + training 12 | + data 13 | - train_labels.csv 14 | - test_labels.csv 15 | - train.record 16 | - test.record 17 | - object-detection.pbtxt 18 | - faster_rcnn_resnet101_coco_2018_01_28.config 19 | - faster_rcnn_resnet101_coco_2018_01_28.tar 20 | + images 21 | + train 22 | - train_images 23 | - train_xmls 24 | + test 25 | - test_images 26 | - test_xmls 27 | - xml_to_csv.py 28 | - generate_tfrecord.py 29 | 30 | 31 | 이 폴더들을 옮기자. 32 | 33 | obj_recog 폴더 안에 있는 data 폴더, faster_rcnn_resnet101_coco_2018_01_28.config, faster_rcnn_resnet101_coco_2018_01_28.tar.gz 를 \models\research\object_detection\ 폴더에 옮기자. 34 | 35 | ----------------------- 파일 및 폴더 상태 ------------------------- 36 | 37 | ( + 폴더, - 파일 ) 38 | 39 | + models 40 | + research 41 | + object_detection 42 | + training 43 | + data 44 | - train.record 45 | - test.record 46 | - object-detection.pbtxt 47 | - faster_rcnn_resnet101_coco_2018_01_28.config 48 | - faster_rcnn_resnet101_coco_2018_01_28.tar.gz 49 | 50 | 51 | 옮긴 후 faster_rcnn_resnet101_coco_2018_01_28.tar.gz 는 압축 풀어 놓는다. 52 | 53 | 이제 training을 해주는 train.py 파일을 살펴보자 54 | 55 | 56 | 57 | 위 부분에 사용방법이 적혀 있다. 58 | 59 | 그 중 1번을 사용할 것이다. 60 | 61 | **27 line** train_dir 는 train directory를 적어주면 된다. 62 | 63 | 본인은 train directory를 따로 만들어주었다. 64 | 65 | **28 line** config_path는 말 그대로 config_path 를 적어주면 된다. ( .pbtxt가 아니라 .config 이다.) 66 | 67 | 아래 명령어는 \models\research\object_detection\training 경로에서 cmd 창을 통해 실행하자 68 | 69 | ``` cmd 70 | python ..\legacy\train.py --logtostderr --train_dir=.\save_model --pipeline_config_path=.\faster_rcnn_resnet101_coco_2018_01_28.config 71 | ``` 72 | 73 | 그럼 training이 진행될 것이다. 74 | 75 | 이 때 loss 가 줄어드는 모습등 현재 상황을 보고 싶다면 tensorboard를 사용하면 된다. 76 | 77 | ``` cmd 78 | > cd ~/model/research/object_detection 79 | > tensorboard --logdir=./training/save_model 80 | ``` 81 | 82 | 을 하면 주소를 띄워주는데 거기에 접속하면 된다. 본인은 http://localhost:6006 을 띄워주었다. 83 | 84 | 접속하면 2분마다 update가 된다. 85 | 86 | weight나 bias 등 그래프로 확인할 수 있어서 좋다. 87 | 88 | tensorboard를 너무 오래 띄워놓고 training을 진행하면 train이 느려진다. 89 | 90 | 그래서 확인할 때만 확인하고 별일 없을때는 꺼두자. 91 | -------------------------------------------------------------------------------- /Object_Detection_API/Step05.md: -------------------------------------------------------------------------------- 1 | # TensorFlow Object Detection API 사용법 2 | 3 | 4 | ## Step 9 train한 파일로 pb파일 만들기 5 | 6 | 학습이 끝나면 7 | 8 | ``` cmd 9 | > cd model\research\object_detection 10 | 11 | > python3 export_inference_graph.py --input_type image_tensor \ 12 | --pipeline_config_path training\faster_rcnn_resnet101_coco_2018_01_28.config \ 13 | --trained_checkpoint_prefix training\save_model\model.ckpt-2000000 \ 14 | --output_directory obj_test 15 | ``` 16 | 17 | 를 하자 18 | 19 | export_inference_graph.py 에 자세한 내용이 있으니 참고하길 바란다. 20 | 21 | --input_type 은 input data의 type에 대해 말한다. 22 | jpg 파일은 uint8 4-d tensor of shape 이므로 image_tensor를 사용한다. 23 | 24 | --pipeline_config_path 는 training시 config 파일을 넣어주면 된다. 25 | 26 | --trained_checkpoint_prefix 는 training시 자동으로 저장되는 ckpt 의 경로를 적어주면 된다. 27 | 저장되는 파일은 data-00000-of-00001 과 index, meta 파일 3가지가 저장된다. 28 | 본인은 model.ckpt-2000000.data-00000-of-00001, model.ckpt-2000000.index, model.ckpt-2000000.meta 파일이 생성되었다. 29 | 명령어에 적어줄 인자는 model.ckpt-2000000 까지만 적어주면 된다. 30 | 31 | --output_detectory pb파일이 저장될 폴더를 적어주자. (없을 시 생성된다.) 32 | 33 | 34 | ## Step 10 생성된 pb파일로 test 해보기 ( jupyter notebook ) 35 | 36 | 위 명령어를 실행하면 obj_test directory에 여러 파일들이 저장되는데 이것을 가지고 test를 해본다. 37 | 38 | ``` cmd 39 | > cd model\research\object_detection 40 | > jupyter notebook 41 | ``` 42 | 43 | 을 하여 여기에 업로드 되어 있는 파일을 실행하면 된다. 44 | 45 | cam으로도 test 가능하며, image 도 test 가능하다. 46 | -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_01.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_02.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_03.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_04.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_05.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_06.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_07.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_01_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_01_08.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_02_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_02_01.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_02_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_02_02.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_01.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_02.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_03.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_04.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_05.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_06.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_07.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_03_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_03_08.png -------------------------------------------------------------------------------- /Object_Detection_API/image/step_04_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Object_Detection_API/image/step_04_01.png -------------------------------------------------------------------------------- /Object_Detection_API/script/generate_tfrecord.py: -------------------------------------------------------------------------------- 1 | # generate_tfrecord.py 2 | 3 | """ 4 | Usage: 5 | # From tensorflow/models/ 6 | # Create train data: 7 | python3 generate_tfrecord.py --csv_input=data/train_labels.csv --output_path=data/train.record 8 | # Create test data: 9 | python3 generate_tfrecord.py --csv_input=data/test_labels.csv --output_path=data/test.record 10 | """ 11 | from __future__ import division 12 | from __future__ import print_function 13 | from __future__ import absolute_import 14 | import os 15 | import io 16 | import pandas as pd 17 | import tensorflow as tf 18 | from PIL import Image 19 | from object_detection.utils import dataset_util 20 | from collections import namedtuple, OrderedDict 21 | flags = tf.app.flags 22 | flags.DEFINE_string('csv_input', '', 'Path to the CSV input') 23 | flags.DEFINE_string('output_path', '', 'Path to output TFRecord') 24 | FLAGS = flags.FLAGS 25 | # TO-DO replace this with label map 26 | def class_text_to_int(row_label): 27 | if row_label == 'cantatacoffee': 28 | return 1 29 | elif row_label =='febreze': 30 | return 2 31 | elif row_label =='greentea': 32 | return 3 33 | elif row_label =='melona': 34 | return 4 35 | elif row_label =='pringlesred': 36 | return 5 37 | elif row_label =='pringlesgreen': 38 | return 6 39 | elif row_label =='topcoffee': 40 | return 7 41 | else: 42 | return 0 43 | def split(df, group): 44 | data = namedtuple('data', ['filename', 'object']) 45 | gb = df.groupby(group) 46 | return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)] 47 | def create_tf_example(group, path): 48 | with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid: 49 | encoded_jpg = fid.read() 50 | encoded_jpg_io = io.BytesIO(encoded_jpg) 51 | image = Image.open(encoded_jpg_io) 52 | width, height = image.size 53 | filename = group.filename.encode('utf8') 54 | image_format = b'jpg' 55 | xmins = [] 56 | ymins = [] 57 | xmaxs = [] 58 | ymaxs = [] 59 | classes_text = [] 60 | classes = [] 61 | for index, row in group.object.iterrows(): 62 | xmins.append(row['xmin'] / width) 63 | xmaxs.append(row['xmax'] / width) 64 | ymins.append(row['ymin'] / height) 65 | ymaxs.append(row['ymax'] / height) 66 | classes_text.append(row['class'].encode('utf8')) 67 | classes.append(class_text_to_int(row['class'])) 68 | tf_example = tf.train.Example(features=tf.train.Features(feature={ 69 | 'image/height': dataset_util.int64_feature(height), 70 | 'image/width': dataset_util.int64_feature(width), 71 | 'image/filename': dataset_util.bytes_feature(filename), 72 | 'image/source_id': dataset_util.bytes_feature(filename), 73 | 'image/encoded': dataset_util.bytes_feature(encoded_jpg), 74 | 'image/format': dataset_util.bytes_feature(image_format), 75 | 'image/object/bbox/xmin': dataset_util.float_list_feature(xmins), 76 | 'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs), 77 | 'image/object/bbox/ymin': dataset_util.float_list_feature(ymins), 78 | 'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs), 79 | 'image/object/class/text': dataset_util.bytes_list_feature(classes_text), 80 | 'image/object/class/label': dataset_util.int64_list_feature(classes), 81 | })) 82 | return tf_example 83 | def main(_): 84 | writer = tf.python_io.TFRecordWriter(FLAGS.output_path) 85 | path = os.path.join(os.getcwd(), 'images/train') 86 | examples = pd.read_csv(FLAGS.csv_input) 87 | grouped = split(examples, 'filename') 88 | for group in grouped: 89 | tf_example = create_tf_example(group, path) 90 | writer.write(tf_example.SerializeToString()) 91 | writer.close() 92 | output_path = os.path.join(os.getcwd(), FLAGS.output_path) 93 | print('Successfully created the TFRecords: {}'.format(output_path)) 94 | if __name__ == '__main__': 95 | tf.app.run() 96 | -------------------------------------------------------------------------------- /Object_Detection_API/script/xml_to_csv.py: -------------------------------------------------------------------------------- 1 | # xml_to_csv.py 2 | 3 | import os 4 | import glob 5 | import pandas as pd 6 | import xml.etree.ElementTree as ET 7 | def xml_to_csv(path): 8 | xml_list = [] 9 | for xml_file in glob.glob(path + '/*.xml'): 10 | tree = ET.parse(xml_file) 11 | root = tree.getroot() 12 | for member in root.findall('object'): 13 | bbox = member.findall('bndbox') 14 | value = (root.find('filename').text, 15 | int(root.find('size')[0].text), 16 | int(root.find('size')[1].text), 17 | member[0].text, 18 | int(bbox[0][0].text), 19 | int(bbox[0][1].text), 20 | int(bbox[0][2].text), 21 | int(bbox[0][3].text) 22 | ) 23 | xml_list.append(value) 24 | column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax'] 25 | xml_df = pd.DataFrame(xml_list, columns=column_name) 26 | return xml_df 27 | def main(): 28 | for directory in ['train','test']: 29 | image_path = os.path.join(os.getcwd(), 'images/{}'.format(directory)) 30 | xml_df = xml_to_csv(image_path) 31 | xml_df.to_csv('data/{}_labels.csv'.format(directory), index=None) 32 | print('Successfully converted xml to csv.') 33 | main() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TensorFlow for V.ais 2 | 3 | --- 4 | ## Tutorial 5 | - Using nn 6 | 7 | - Using estimator 8 | 9 | - GAN 10 | 11 | ## Object Detection API 사용법 12 | -------------------------------------------------------------------------------- /Tutorial/Estimator/MNIST_data/t10k-images-idx3-ubyte.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Tutorial/Estimator/MNIST_data/t10k-images-idx3-ubyte.gz -------------------------------------------------------------------------------- /Tutorial/Estimator/MNIST_data/t10k-labels-idx1-ubyte.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Tutorial/Estimator/MNIST_data/t10k-labels-idx1-ubyte.gz -------------------------------------------------------------------------------- /Tutorial/Estimator/MNIST_data/train-images-idx3-ubyte.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Tutorial/Estimator/MNIST_data/train-images-idx3-ubyte.gz -------------------------------------------------------------------------------- /Tutorial/Estimator/MNIST_data/train-labels-idx1-ubyte.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/V-AIS/tensorflow/9dec9596ff30a236bfbbde310c31714a4b4b6970/Tutorial/Estimator/MNIST_data/train-labels-idx1-ubyte.gz -------------------------------------------------------------------------------- /Tutorial/Estimator/mnist_tfrecord.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "scrolled": true 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stderr", 12 | "output_type": "stream", 13 | "text": [ 14 | "Using TensorFlow backend.\n" 15 | ] 16 | } 17 | ], 18 | "source": [ 19 | "from keras import datasets as kd\n", 20 | "from keras import utils as ku\n", 21 | "import tensorflow as tf\n", 22 | "import numpy as np" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 2, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "(train_x, train_y), (test_x, test_y) = kd.mnist.load_data()\n", 32 | "train_y, test_y = ku.to_categorical(train_y, 10), ku.to_categorical(test_y, 10)" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": null, 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "def cnn_model_fn(features, labels, mode):\n", 42 | " \"\"\"Model function for CNN.\"\"\"\n", 43 | " # Input Layer\n", 44 | " input_layer = tf.reshape(features[\"x\"], [-1, 28, 28, 1])\n", 45 | "\n", 46 | " # Convolutional Layer #1\n", 47 | " conv1 = tf.layers.conv2d(\n", 48 | " inputs=input_layer,\n", 49 | " filters=32,\n", 50 | " kernel_size=[5, 5],\n", 51 | " padding=\"same\",\n", 52 | " activation=tf.nn.relu)\n", 53 | "\n", 54 | " # Pooling Layer #1\n", 55 | " pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)\n", 56 | "\n", 57 | " # Convolutional Layer #2 and Pooling Layer #2\n", 58 | " conv2 = tf.layers.conv2d(\n", 59 | " inputs=pool1,\n", 60 | " filters=64,\n", 61 | " kernel_size=[5, 5],\n", 62 | " padding=\"same\",\n", 63 | " activation=tf.nn.relu)\n", 64 | " pool2 = tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2)\n", 65 | "\n", 66 | " # Dense Layer\n", 67 | " pool2_flat = tf.reshape(pool2, [-1, 7 * 7 * 64])\n", 68 | " dense = tf.layers.dense(inputs=pool2_flat, units=1024, activation=tf.nn.relu)\n", 69 | " dropout = tf.layers.dropout(\n", 70 | " inputs=dense, rate=0.4, training=mode == tf.estimator.ModeKeys.TRAIN)\n", 71 | "\n", 72 | " # Logits Layer\n", 73 | " logits = tf.layers.dense(inputs=dropout, units=10)\n", 74 | "\n", 75 | " predictions = {\n", 76 | " # Generate predictions (for PREDICT and EVAL mode)\n", 77 | " \"classes\": tf.argmax(input=logits, axis=1),\n", 78 | " # Add `softmax_tensor` to the graph. It is used for PREDICT and by the\n", 79 | " # `logging_hook`.\n", 80 | " \"probabilities\": tf.nn.softmax(logits, name=\"softmax_tensor\")\n", 81 | " }\n", 82 | "\n", 83 | " if mode == tf.estimator.ModeKeys.PREDICT:\n", 84 | " return tf.estimator.EstimatorSpec(mode=mode, predictions=predictions)\n", 85 | "\n", 86 | " # Calculate Loss (for both TRAIN and EVAL modes)\n", 87 | " loss = tf.losses.sparse_softmax_cross_entropy(labels=labels, logits=logits)\n", 88 | "\n", 89 | " # Configure the Training Op (for TRAIN mode)\n", 90 | " if mode == tf.estimator.ModeKeys.TRAIN:\n", 91 | " optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001)\n", 92 | " train_op = optimizer.minimize(\n", 93 | " loss=loss,\n", 94 | " global_step=tf.train.get_global_step())\n", 95 | " return tf.estimator.EstimatorSpec(mode=mode, loss=loss, train_op=train_op)\n", 96 | "\n", 97 | " # Add evaluation metrics (for EVAL mode)\n", 98 | " eval_metric_ops = {\n", 99 | " \"accuracy\": tf.metrics.accuracy(\n", 100 | " labels=labels, predictions=predictions[\"classes\"])}\n", 101 | " return tf.estimator.EstimatorSpec(\n", 102 | " mode=mode, loss=loss, eval_metric_ops=eval_metric_ops)\n", 103 | "\n", 104 | "\n", 105 | "def main(unused_argv):\n", 106 | " # Load training and eval data\n", 107 | " mnist = tf.contrib.learn.datasets.load_dataset(\"mnist\")\n", 108 | " train_data = mnist.train.images # Returns np.array\n", 109 | " train_labels = np.asarray(mnist.train.labels, dtype=np.int32)\n", 110 | " eval_data = mnist.test.images # Returns np.array\n", 111 | " eval_labels = np.asarray(mnist.test.labels, dtype=np.int32)\n", 112 | " \n", 113 | "# Create the Estimator\n", 114 | "mnist_classifier = tf.estimator.Estimator(\n", 115 | " model_fn=cnn_model_fn, model_dir=\"/tmp/mnist_convnet_model\")" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 14, 121 | "metadata": {}, 122 | "outputs": [], 123 | "source": [ 124 | "def train_input_fn_data(features, labels, batch_size):\n", 125 | " \"\"\"An input function for training\"\"\"\n", 126 | " # Convert the inputs to a Dataset.\n", 127 | " \n", 128 | " def parse(row):\n", 129 | " row[\"image\"] = img\n", 130 | " return row\n", 131 | " \n", 132 | " dataset = tf.data.Dataset.from_tensor_slices(dict(image = features, label = labels))\n", 133 | "\n", 134 | " # Shuffle, repeat, and batch the examples.\n", 135 | " dataset = dataset.shuffle(100000)\n", 136 | " dataset = dataset.repeat()\n", 137 | " dataset = dataset.batch(batch_size)\n", 138 | " iterator = dataset.make_one_shot_iterator()\n", 139 | " batch_x, batch_y = iterator.get_next()\n", 140 | " # Return the dataset.\n", 141 | " return batch_x, batch_y" 142 | ] 143 | }, 144 | { 145 | "cell_type": "code", 146 | "execution_count": 12, 147 | "metadata": {}, 148 | "outputs": [ 149 | { 150 | "name": "stdout", 151 | "output_type": "stream", 152 | "text": [ 153 | "INFO:tensorflow:Using default config.\n", 154 | "INFO:tensorflow:Using config: {'_model_dir': './tmp/mnist_model', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_service': None, '_cluster_spec': , '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}\n" 155 | ] 156 | } 157 | ], 158 | "source": [ 159 | "# Specify feature\n", 160 | "feature_columns = [tf.feature_column.numeric_column(\"x\", shape=[28, 28])]\n", 161 | "\n", 162 | "# Build 2 layer DNN classifier\n", 163 | "classifier = tf.estimator.DNNClassifier(\n", 164 | " feature_columns=feature_columns,\n", 165 | " hidden_units=[256, 32],\n", 166 | " optimizer=tf.train.AdamOptimizer(1e-4),\n", 167 | " n_classes=10,\n", 168 | " dropout=0.1,\n", 169 | " model_dir=\"./tmp/mnist_model\"\n", 170 | ")" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 15, 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "name": "stdout", 180 | "output_type": "stream", 181 | "text": [ 182 | "INFO:tensorflow:Calling model_fn.\n" 183 | ] 184 | }, 185 | { 186 | "ename": "ValueError", 187 | "evalue": "features should be a dictionary of `Tensor`s. Given type: ", 188 | "output_type": "error", 189 | "traceback": [ 190 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 191 | "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", 192 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mclassifier\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mtrain_input_fn_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_y\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msteps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 193 | "\u001b[0;32m~/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(self, input_fn, hooks, steps, max_steps, saving_listeners)\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0msaving_listeners\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_check_listeners_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_train_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Loss for final step: %s.'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 378\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 194 | "\u001b[0;32m~/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py\u001b[0m in \u001b[0;36m_train_model\u001b[0;34m(self, input_fn, hooks, saving_listeners)\u001b[0m\n\u001b[1;32m 1143\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_train_model_distributed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1144\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1145\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_train_model_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1146\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1147\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_train_model_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 195 | "\u001b[0;32m~/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py\u001b[0m in \u001b[0;36m_train_model_default\u001b[0;34m(self, input_fn, hooks, saving_listeners)\u001b[0m\n\u001b[1;32m 1168\u001b[0m \u001b[0mworker_hooks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_hooks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1169\u001b[0m estimator_spec = self._call_model_fn(\n\u001b[0;32m-> 1170\u001b[0;31m features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)\n\u001b[0m\u001b[1;32m 1171\u001b[0m return self._train_with_estimator_spec(estimator_spec, worker_hooks,\n\u001b[1;32m 1172\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglobal_step_tensor\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 196 | "\u001b[0;32m~/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py\u001b[0m in \u001b[0;36m_call_model_fn\u001b[0;34m(self, features, labels, mode, config)\u001b[0m\n\u001b[1;32m 1131\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1132\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Calling model_fn.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1133\u001b[0;31m \u001b[0mmodel_fn_results\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_model_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfeatures\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeatures\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1134\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Done calling model_fn.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1135\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 197 | "\u001b[0;32m~/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/site-packages/tensorflow/python/estimator/canned/dnn.py\u001b[0m in \u001b[0;36m_model_fn\u001b[0;34m(features, labels, mode, config)\u001b[0m\n\u001b[1;32m 383\u001b[0m \u001b[0minput_layer_partitioner\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_layer_partitioner\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 384\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 385\u001b[0;31m batch_norm=batch_norm)\n\u001b[0m\u001b[1;32m 386\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 387\u001b[0m super(DNNClassifier, self).__init__(\n", 198 | "\u001b[0;32m~/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/site-packages/tensorflow/python/estimator/canned/dnn.py\u001b[0m in \u001b[0;36m_dnn_model_fn\u001b[0;34m(features, labels, mode, head, hidden_units, feature_columns, optimizer, activation_fn, dropout, input_layer_partitioner, config, tpu_estimator_spec, batch_norm)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfeatures\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m raise ValueError('features should be a dictionary of `Tensor`s. '\n\u001b[0;32m--> 179\u001b[0;31m 'Given type: {}'.format(type(features)))\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m optimizer = optimizers.get_optimizer_instance(\n", 199 | "\u001b[0;31mValueError\u001b[0m: features should be a dictionary of `Tensor`s. Given type: " 200 | ] 201 | } 202 | ], 203 | "source": [ 204 | "classifier.train(lambda:train_input_fn_data(train_x, train_y, 10), steps=10000)" 205 | ] 206 | }, 207 | { 208 | "cell_type": "code", 209 | "execution_count": null, 210 | "metadata": {}, 211 | "outputs": [], 212 | "source": [] 213 | } 214 | ], 215 | "metadata": { 216 | "kernelspec": { 217 | "display_name": "Python 3", 218 | "language": "python", 219 | "name": "python3" 220 | }, 221 | "language_info": { 222 | "codemirror_mode": { 223 | "name": "ipython", 224 | "version": 3 225 | }, 226 | "file_extension": ".py", 227 | "mimetype": "text/x-python", 228 | "name": "python", 229 | "nbconvert_exporter": "python", 230 | "pygments_lexer": "ipython3", 231 | "version": "3.6.5" 232 | } 233 | }, 234 | "nbformat": 4, 235 | "nbformat_minor": 2 236 | } 237 | -------------------------------------------------------------------------------- /Tutorial/nn/Linear_Regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stderr", 12 | "output_type": "stream", 13 | "text": [ 14 | "/Users/jerry/.pyenv/versions/anaconda3-5.2.0/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6\n", 15 | " return f(*args, **kwds)\n" 16 | ] 17 | } 18 | ], 19 | "source": [ 20 | "import numpy as np\n", 21 | "import tensorflow as tf\n", 22 | "from matplotlib import pyplot as plt" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 2, 28 | "metadata": { 29 | "collapsed": true 30 | }, 31 | "outputs": [ 32 | { 33 | "data": { 34 | "image/png": "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\n", 35 | "text/plain": [ 36 | "
" 37 | ] 38 | }, 39 | "metadata": {}, 40 | "output_type": "display_data" 41 | } 42 | ], 43 | "source": [ 44 | "x = np.random.normal(0.0, 0.55, (10000, 1))\n", 45 | "y = x * 0.1 + 0.3 + np.random.normal(0.0, 0.03, (10000,1))\n", 46 | " \n", 47 | "plt.plot(x, y, 'r.')\n", 48 | "plt.show()" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": 3, 54 | "metadata": {}, 55 | "outputs": [], 56 | "source": [ 57 | "X = tf.placeholder(tf.float32, shape=[None, 1])\n", 58 | "W = tf.Variable(tf.random_normal([1]))\n", 59 | "b = tf.Variable(tf.zeros([1]))\n", 60 | "\n", 61 | "h = X*W+b" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 4, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [ 70 | "Y = tf.placeholder(tf.float32, shape = [None, 1])\n", 71 | "Loss = tf.reduce_mean(tf.square(h - Y))\n", 72 | "optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(Loss)" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 5, 78 | "metadata": {}, 79 | "outputs": [], 80 | "source": [ 81 | "sess = tf.Session()\n", 82 | "sess.run(tf.global_variables_initializer())" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": 6, 88 | "metadata": {}, 89 | "outputs": [ 90 | { 91 | "name": "stdout", 92 | "output_type": "stream", 93 | "text": [ 94 | "Epoch : 0 Loss : 0.1195698\n" 95 | ] 96 | }, 97 | { 98 | "data": { 99 | "image/png": "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\n", 100 | "text/plain": [ 101 | "
" 102 | ] 103 | }, 104 | "metadata": {}, 105 | "output_type": "display_data" 106 | }, 107 | { 108 | "name": "stdout", 109 | "output_type": "stream", 110 | "text": [ 111 | "Epoch : 1 Loss : 0.10103137\n", 112 | "Epoch : 2 Loss : 0.08577537\n", 113 | "Epoch : 3 Loss : 0.07319236\n", 114 | "Epoch : 4 Loss : 0.062788025\n", 115 | "Epoch : 5 Loss : 0.05416109\n", 116 | "Epoch : 6 Loss : 0.046985723\n", 117 | "Epoch : 7 Loss : 0.04099741\n", 118 | "Epoch : 8 Loss : 0.035981093\n", 119 | "Epoch : 9 Loss : 0.03176206\n", 120 | "Epoch : 10 Loss : 0.028198114\n", 121 | "Epoch : 11 Loss : 0.025173577\n", 122 | "Epoch : 12 Loss : 0.022594191\n", 123 | "Epoch : 13 Loss : 0.020383123\n", 124 | "Epoch : 14 Loss : 0.018477697\n", 125 | "Epoch : 15 Loss : 0.016826684\n", 126 | "Epoch : 16 Loss : 0.0153881805\n", 127 | "Epoch : 17 Loss : 0.014127868\n", 128 | "Epoch : 18 Loss : 0.013017598\n", 129 | "Epoch : 19 Loss : 0.012034203\n", 130 | "Epoch : 20 Loss : 0.011158607\n", 131 | "Epoch : 21 Loss : 0.010375068\n", 132 | "Epoch : 22 Loss : 0.009670543\n", 133 | "Epoch : 23 Loss : 0.009034192\n", 134 | "Epoch : 24 Loss : 0.008457006\n", 135 | "Epoch : 25 Loss : 0.007931436\n", 136 | "Epoch : 26 Loss : 0.0074511445\n", 137 | "Epoch : 27 Loss : 0.0070108054\n", 138 | "Epoch : 28 Loss : 0.0066058915\n", 139 | "Epoch : 29 Loss : 0.006232567\n", 140 | "Epoch : 30 Loss : 0.005887541\n", 141 | "Epoch : 31 Loss : 0.0055679902\n", 142 | "Epoch : 32 Loss : 0.0052714692\n", 143 | "Epoch : 33 Loss : 0.0049958657\n", 144 | "Epoch : 34 Loss : 0.004739322\n", 145 | "Epoch : 35 Loss : 0.004500213\n", 146 | "Epoch : 36 Loss : 0.0042770975\n", 147 | "Epoch : 37 Loss : 0.004068703\n", 148 | "Epoch : 38 Loss : 0.0038738854\n", 149 | "Epoch : 39 Loss : 0.0036916267\n", 150 | "Epoch : 40 Loss : 0.0035210021\n", 151 | "Epoch : 41 Loss : 0.0033611779\n", 152 | "Epoch : 42 Loss : 0.0032113998\n", 153 | "Epoch : 43 Loss : 0.0030709705\n", 154 | "Epoch : 44 Loss : 0.0029392617\n", 155 | "Epoch : 45 Loss : 0.0028156901\n", 156 | "Epoch : 46 Loss : 0.0026997207\n", 157 | "Epoch : 47 Loss : 0.0025908614\n", 158 | "Epoch : 48 Loss : 0.0024886525\n", 159 | "Epoch : 49 Loss : 0.0023926727\n", 160 | "Epoch : 50 Loss : 0.002302527\n", 161 | "Epoch : 51 Loss : 0.0022178497\n", 162 | "Epoch : 52 Loss : 0.0021383003\n", 163 | "Epoch : 53 Loss : 0.0020635608\n", 164 | "Epoch : 54 Loss : 0.0019933318\n", 165 | "Epoch : 55 Loss : 0.0019273396\n", 166 | "Epoch : 56 Loss : 0.0018653236\n", 167 | "Epoch : 57 Loss : 0.0018070402\n", 168 | "Epoch : 58 Loss : 0.0017522629\n", 169 | "Epoch : 59 Loss : 0.0017007786\n", 170 | "Epoch : 60 Loss : 0.0016523874\n", 171 | "Epoch : 61 Loss : 0.0016069015\n", 172 | "Epoch : 62 Loss : 0.0015641468\n", 173 | "Epoch : 63 Loss : 0.0015239579\n", 174 | "Epoch : 64 Loss : 0.0014861792\n", 175 | "Epoch : 65 Loss : 0.001450666\n", 176 | "Epoch : 66 Loss : 0.0014172823\n", 177 | "Epoch : 67 Loss : 0.0013859\n", 178 | "Epoch : 68 Loss : 0.0013563989\n", 179 | "Epoch : 69 Loss : 0.0013286653\n", 180 | "Epoch : 70 Loss : 0.0013025928\n", 181 | "Epoch : 71 Loss : 0.0012780832\n", 182 | "Epoch : 72 Loss : 0.001255042\n", 183 | "Epoch : 73 Loss : 0.0012333802\n", 184 | "Epoch : 74 Loss : 0.0012130165\n", 185 | "Epoch : 75 Loss : 0.0011938716\n", 186 | "Epoch : 76 Loss : 0.0011758745\n", 187 | "Epoch : 77 Loss : 0.0011589548\n", 188 | "Epoch : 78 Loss : 0.0011430484\n", 189 | "Epoch : 79 Loss : 0.0011280946\n", 190 | "Epoch : 80 Loss : 0.0011140364\n", 191 | "Epoch : 81 Loss : 0.0011008198\n", 192 | "Epoch : 82 Loss : 0.0010883948\n", 193 | "Epoch : 83 Loss : 0.0010767138\n", 194 | "Epoch : 84 Loss : 0.0010657316\n", 195 | "Epoch : 85 Loss : 0.0010554077\n", 196 | "Epoch : 86 Loss : 0.0010457017\n", 197 | "Epoch : 87 Loss : 0.001036577\n", 198 | "Epoch : 88 Loss : 0.0010279985\n", 199 | "Epoch : 89 Loss : 0.0010199338\n", 200 | "Epoch : 90 Loss : 0.0010123518\n", 201 | "Epoch : 91 Loss : 0.0010052244\n", 202 | "Epoch : 92 Loss : 0.0009985231\n", 203 | "Epoch : 93 Loss : 0.0009922228\n", 204 | "Epoch : 94 Loss : 0.0009863005\n", 205 | "Epoch : 95 Loss : 0.0009807324\n", 206 | "Epoch : 96 Loss : 0.00097549724\n", 207 | "Epoch : 97 Loss : 0.00097057637\n", 208 | "Epoch : 98 Loss : 0.00096594944\n", 209 | "Epoch : 99 Loss : 0.00096160005\n" 210 | ] 211 | }, 212 | { 213 | "data": { 214 | "image/png": "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\n", 215 | "text/plain": [ 216 | "
" 217 | ] 218 | }, 219 | "metadata": {}, 220 | "output_type": "display_data" 221 | }, 222 | { 223 | "name": "stdout", 224 | "output_type": "stream", 225 | "text": [ 226 | "Epoch : 100 Loss : 0.00095751096\n", 227 | "Epoch : 101 Loss : 0.0009536664\n", 228 | "Epoch : 102 Loss : 0.000950052\n", 229 | "Epoch : 103 Loss : 0.00094665453\n", 230 | "Epoch : 104 Loss : 0.0009434599\n", 231 | "Epoch : 105 Loss : 0.00094045675\n", 232 | "Epoch : 106 Loss : 0.0009376335\n", 233 | "Epoch : 107 Loss : 0.00093497935\n", 234 | "Epoch : 108 Loss : 0.00093248393\n", 235 | "Epoch : 109 Loss : 0.000930138\n", 236 | "Epoch : 110 Loss : 0.00092793274\n", 237 | "Epoch : 111 Loss : 0.0009258591\n", 238 | "Epoch : 112 Loss : 0.00092390995\n", 239 | "Epoch : 113 Loss : 0.0009220774\n", 240 | "Epoch : 114 Loss : 0.0009203544\n", 241 | "Epoch : 115 Loss : 0.00091873435\n", 242 | "Epoch : 116 Loss : 0.0009172115\n", 243 | "Epoch : 117 Loss : 0.0009157801\n", 244 | "Epoch : 118 Loss : 0.00091443403\n", 245 | "Epoch : 119 Loss : 0.0009131689\n", 246 | "Epoch : 120 Loss : 0.00091197947\n", 247 | "Epoch : 121 Loss : 0.0009108614\n", 248 | "Epoch : 122 Loss : 0.00090980995\n", 249 | "Epoch : 123 Loss : 0.0009088215\n", 250 | "Epoch : 124 Loss : 0.0009078921\n", 251 | "Epoch : 125 Loss : 0.00090701866\n", 252 | "Epoch : 126 Loss : 0.00090619735\n", 253 | "Epoch : 127 Loss : 0.0009054252\n", 254 | "Epoch : 128 Loss : 0.0009046993\n", 255 | "Epoch : 129 Loss : 0.00090401707\n", 256 | "Epoch : 130 Loss : 0.00090337545\n", 257 | "Epoch : 131 Loss : 0.00090277224\n", 258 | "Epoch : 132 Loss : 0.0009022052\n", 259 | "Epoch : 133 Loss : 0.00090167177\n", 260 | "Epoch : 134 Loss : 0.00090117095\n", 261 | "Epoch : 135 Loss : 0.0009006998\n", 262 | "Epoch : 136 Loss : 0.00090025633\n", 263 | "Epoch : 137 Loss : 0.0008998404\n", 264 | "Epoch : 138 Loss : 0.00089944876\n", 265 | "Epoch : 139 Loss : 0.00089908065\n", 266 | "Epoch : 140 Loss : 0.00089873484\n", 267 | "Epoch : 141 Loss : 0.00089840905\n", 268 | "Epoch : 142 Loss : 0.00089810364\n", 269 | "Epoch : 143 Loss : 0.0008978161\n", 270 | "Epoch : 144 Loss : 0.0008975454\n", 271 | "Epoch : 145 Loss : 0.00089729135\n", 272 | "Epoch : 146 Loss : 0.0008970527\n", 273 | "Epoch : 147 Loss : 0.0008968281\n", 274 | "Epoch : 148 Loss : 0.00089661713\n", 275 | "Epoch : 149 Loss : 0.00089641876\n", 276 | "Epoch : 150 Loss : 0.0008962319\n", 277 | "Epoch : 151 Loss : 0.0008960562\n", 278 | "Epoch : 152 Loss : 0.0008958916\n", 279 | "Epoch : 153 Loss : 0.0008957364\n", 280 | "Epoch : 154 Loss : 0.00089559075\n", 281 | "Epoch : 155 Loss : 0.000895454\n", 282 | "Epoch : 156 Loss : 0.0008953251\n", 283 | "Epoch : 157 Loss : 0.0008952036\n", 284 | "Epoch : 158 Loss : 0.0008950895\n", 285 | "Epoch : 159 Loss : 0.0008949829\n", 286 | "Epoch : 160 Loss : 0.0008948817\n", 287 | "Epoch : 161 Loss : 0.000894787\n", 288 | "Epoch : 162 Loss : 0.00089469855\n", 289 | "Epoch : 163 Loss : 0.0008946145\n", 290 | "Epoch : 164 Loss : 0.00089453603\n", 291 | "Epoch : 165 Loss : 0.000894462\n", 292 | "Epoch : 166 Loss : 0.0008943925\n", 293 | "Epoch : 167 Loss : 0.00089432753\n", 294 | "Epoch : 168 Loss : 0.00089426595\n", 295 | "Epoch : 169 Loss : 0.00089420815\n", 296 | "Epoch : 170 Loss : 0.00089415396\n", 297 | "Epoch : 171 Loss : 0.0008941027\n", 298 | "Epoch : 172 Loss : 0.000894055\n", 299 | "Epoch : 173 Loss : 0.0008940098\n", 300 | "Epoch : 174 Loss : 0.0008939672\n", 301 | "Epoch : 175 Loss : 0.0008939271\n", 302 | "Epoch : 176 Loss : 0.0008938902\n", 303 | "Epoch : 177 Loss : 0.0008938549\n", 304 | "Epoch : 178 Loss : 0.0008938211\n", 305 | "Epoch : 179 Loss : 0.00089379045\n", 306 | "Epoch : 180 Loss : 0.00089376076\n", 307 | "Epoch : 181 Loss : 0.0008937337\n", 308 | "Epoch : 182 Loss : 0.00089370785\n", 309 | "Epoch : 183 Loss : 0.0008936834\n", 310 | "Epoch : 184 Loss : 0.00089366076\n", 311 | "Epoch : 185 Loss : 0.0008936387\n", 312 | "Epoch : 186 Loss : 0.00089361856\n", 313 | "Epoch : 187 Loss : 0.0008935998\n", 314 | "Epoch : 188 Loss : 0.0008935819\n", 315 | "Epoch : 189 Loss : 0.0008935653\n", 316 | "Epoch : 190 Loss : 0.0008935495\n", 317 | "Epoch : 191 Loss : 0.0008935344\n", 318 | "Epoch : 192 Loss : 0.0008935207\n", 319 | "Epoch : 193 Loss : 0.0008935072\n", 320 | "Epoch : 194 Loss : 0.000893495\n", 321 | "Epoch : 195 Loss : 0.0008934835\n", 322 | "Epoch : 196 Loss : 0.00089347246\n", 323 | "Epoch : 197 Loss : 0.0008934624\n", 324 | "Epoch : 198 Loss : 0.00089345244\n", 325 | "Epoch : 199 Loss : 0.0008934435\n" 326 | ] 327 | }, 328 | { 329 | "data": { 330 | "image/png": "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\n", 331 | "text/plain": [ 332 | "
" 333 | ] 334 | }, 335 | "metadata": {}, 336 | "output_type": "display_data" 337 | }, 338 | { 339 | "name": "stdout", 340 | "output_type": "stream", 341 | "text": [ 342 | "Epoch : 200 Loss : 0.0008934351\n", 343 | "Epoch : 201 Loss : 0.0008934273\n", 344 | "Epoch : 202 Loss : 0.00089341955\n", 345 | "Epoch : 203 Loss : 0.0008934128\n", 346 | "Epoch : 204 Loss : 0.00089340564\n", 347 | "Epoch : 205 Loss : 0.00089339964\n", 348 | "Epoch : 206 Loss : 0.00089339353\n", 349 | "Epoch : 207 Loss : 0.0008933882\n", 350 | "Epoch : 208 Loss : 0.0008933832\n", 351 | "Epoch : 209 Loss : 0.00089337805\n", 352 | "Epoch : 210 Loss : 0.0008933733\n", 353 | "Epoch : 211 Loss : 0.0008933693\n", 354 | "Epoch : 212 Loss : 0.0008933649\n", 355 | "Epoch : 213 Loss : 0.00089336146\n", 356 | "Epoch : 214 Loss : 0.00089335773\n", 357 | "Epoch : 215 Loss : 0.00089335453\n", 358 | "Epoch : 216 Loss : 0.000893351\n", 359 | "Epoch : 217 Loss : 0.00089334784\n", 360 | "Epoch : 218 Loss : 0.00089334534\n", 361 | "Epoch : 219 Loss : 0.00089334266\n", 362 | "Epoch : 220 Loss : 0.00089334033\n", 363 | "Epoch : 221 Loss : 0.000893338\n", 364 | "Epoch : 222 Loss : 0.00089333585\n", 365 | "Epoch : 223 Loss : 0.00089333346\n", 366 | "Epoch : 224 Loss : 0.0008933316\n", 367 | "Epoch : 225 Loss : 0.00089332974\n", 368 | "Epoch : 226 Loss : 0.0008933281\n", 369 | "Epoch : 227 Loss : 0.00089332677\n", 370 | "Epoch : 228 Loss : 0.00089332525\n", 371 | "Epoch : 229 Loss : 0.0008933237\n", 372 | "Epoch : 230 Loss : 0.00089332246\n", 373 | "Epoch : 231 Loss : 0.0008933214\n", 374 | "Epoch : 232 Loss : 0.0008933199\n", 375 | "Epoch : 233 Loss : 0.00089331873\n", 376 | "Epoch : 234 Loss : 0.0008933178\n", 377 | "Epoch : 235 Loss : 0.0008933168\n", 378 | "Epoch : 236 Loss : 0.0008933157\n", 379 | "Epoch : 237 Loss : 0.0008933151\n", 380 | "Epoch : 238 Loss : 0.00089331437\n", 381 | "Epoch : 239 Loss : 0.0008933134\n", 382 | "Epoch : 240 Loss : 0.0008933126\n", 383 | "Epoch : 241 Loss : 0.00089331216\n", 384 | "Epoch : 242 Loss : 0.0008933113\n", 385 | "Epoch : 243 Loss : 0.0008933108\n", 386 | "Epoch : 244 Loss : 0.00089331035\n", 387 | "Epoch : 245 Loss : 0.00089330977\n", 388 | "Epoch : 246 Loss : 0.0008933092\n", 389 | "Epoch : 247 Loss : 0.00089330884\n", 390 | "Epoch : 248 Loss : 0.00089330843\n", 391 | "Epoch : 249 Loss : 0.0008933078\n", 392 | "Epoch : 250 Loss : 0.0008933077\n", 393 | "Epoch : 251 Loss : 0.0008933075\n", 394 | "Epoch : 252 Loss : 0.00089330674\n", 395 | "Epoch : 253 Loss : 0.00089330634\n", 396 | "Epoch : 254 Loss : 0.00089330616\n", 397 | "Epoch : 255 Loss : 0.000893306\n", 398 | "Epoch : 256 Loss : 0.0008933055\n", 399 | "Epoch : 257 Loss : 0.00089330523\n", 400 | "Epoch : 258 Loss : 0.000893305\n", 401 | "Epoch : 259 Loss : 0.0008933048\n", 402 | "Epoch : 260 Loss : 0.0008933047\n", 403 | "Epoch : 261 Loss : 0.00089330465\n", 404 | "Epoch : 262 Loss : 0.00089330436\n", 405 | "Epoch : 263 Loss : 0.00089330407\n", 406 | "Epoch : 264 Loss : 0.0008933039\n", 407 | "Epoch : 265 Loss : 0.0008933035\n", 408 | "Epoch : 266 Loss : 0.0008933039\n", 409 | "Epoch : 267 Loss : 0.0008933038\n", 410 | "Epoch : 268 Loss : 0.0008933035\n", 411 | "Epoch : 269 Loss : 0.00089330313\n", 412 | "Epoch : 270 Loss : 0.0008933033\n", 413 | "Epoch : 271 Loss : 0.000893303\n", 414 | "Epoch : 272 Loss : 0.00089330313\n", 415 | "Epoch : 273 Loss : 0.00089330284\n", 416 | "Epoch : 274 Loss : 0.0008933027\n", 417 | "Epoch : 275 Loss : 0.00089330284\n", 418 | "Epoch : 276 Loss : 0.00089330226\n", 419 | "Epoch : 277 Loss : 0.00089330255\n", 420 | "Epoch : 278 Loss : 0.0008933023\n", 421 | "Epoch : 279 Loss : 0.00089330255\n", 422 | "Epoch : 280 Loss : 0.00089330226\n", 423 | "Epoch : 281 Loss : 0.00089330226\n", 424 | "Epoch : 282 Loss : 0.0008933021\n", 425 | "Epoch : 283 Loss : 0.0008933023\n", 426 | "Epoch : 284 Loss : 0.00089330197\n", 427 | "Epoch : 285 Loss : 0.00089330215\n", 428 | "Epoch : 286 Loss : 0.00089330215\n", 429 | "Epoch : 287 Loss : 0.00089330197\n", 430 | "Epoch : 288 Loss : 0.00089330215\n", 431 | "Epoch : 289 Loss : 0.00089330185\n", 432 | "Epoch : 290 Loss : 0.00089330197\n", 433 | "Epoch : 291 Loss : 0.00089330197\n", 434 | "Epoch : 292 Loss : 0.00089330197\n", 435 | "Epoch : 293 Loss : 0.00089330197\n", 436 | "Epoch : 294 Loss : 0.00089330197\n", 437 | "Epoch : 295 Loss : 0.0008933017\n", 438 | "Epoch : 296 Loss : 0.00089330156\n", 439 | "Epoch : 297 Loss : 0.0008933017\n", 440 | "Epoch : 298 Loss : 0.00089330156\n", 441 | "Epoch : 299 Loss : 0.00089330156\n" 442 | ] 443 | }, 444 | { 445 | "data": { 446 | "image/png": "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\n", 447 | "text/plain": [ 448 | "
" 449 | ] 450 | }, 451 | "metadata": {}, 452 | "output_type": "display_data" 453 | }, 454 | { 455 | "name": "stdout", 456 | "output_type": "stream", 457 | "text": [ 458 | "Epoch : 300 Loss : 0.0008933018\n", 459 | "Epoch : 301 Loss : 0.0008933018\n", 460 | "Epoch : 302 Loss : 0.00089330197\n", 461 | "Epoch : 303 Loss : 0.0008933018\n", 462 | "Epoch : 304 Loss : 0.0008933014\n", 463 | "Epoch : 305 Loss : 0.0008933017\n", 464 | "Epoch : 306 Loss : 0.00089330156\n", 465 | "Epoch : 307 Loss : 0.0008933018\n", 466 | "Epoch : 308 Loss : 0.00089330156\n", 467 | "Epoch : 309 Loss : 0.0008933017\n", 468 | "Epoch : 310 Loss : 0.0008933018\n", 469 | "Epoch : 311 Loss : 0.00089330156\n", 470 | "Epoch : 312 Loss : 0.0008933017\n", 471 | "Epoch : 313 Loss : 0.0008933018\n", 472 | "Epoch : 314 Loss : 0.00089330156\n", 473 | "Epoch : 315 Loss : 0.0008933014\n", 474 | "Epoch : 316 Loss : 0.0008933014\n", 475 | "Epoch : 317 Loss : 0.0008933015\n", 476 | "Epoch : 318 Loss : 0.00089330156\n", 477 | "Epoch : 319 Loss : 0.0008933014\n", 478 | "Epoch : 320 Loss : 0.0008933018\n", 479 | "Epoch : 321 Loss : 0.00089330185\n", 480 | "Epoch : 322 Loss : 0.0008933017\n", 481 | "Epoch : 323 Loss : 0.0008933012\n", 482 | "Epoch : 324 Loss : 0.0008933015\n", 483 | "Epoch : 325 Loss : 0.0008933017\n", 484 | "Epoch : 326 Loss : 0.00089330156\n", 485 | "Epoch : 327 Loss : 0.00089330185\n", 486 | "Epoch : 328 Loss : 0.00089330156\n", 487 | "Epoch : 329 Loss : 0.0008933015\n", 488 | "Epoch : 330 Loss : 0.0008933015\n", 489 | "Epoch : 331 Loss : 0.00089330156\n", 490 | "Epoch : 332 Loss : 0.0008933015\n", 491 | "Epoch : 333 Loss : 0.00089330156\n", 492 | "Epoch : 334 Loss : 0.00089330156\n", 493 | "Epoch : 335 Loss : 0.0008933018\n", 494 | "Epoch : 336 Loss : 0.0008933018\n", 495 | "Epoch : 337 Loss : 0.0008933017\n", 496 | "Epoch : 338 Loss : 0.0008933014\n", 497 | "Epoch : 339 Loss : 0.0008933012\n", 498 | "Epoch : 340 Loss : 0.0008933012\n", 499 | "Epoch : 341 Loss : 0.0008933013\n", 500 | "Epoch : 342 Loss : 0.0008933014\n", 501 | "Epoch : 343 Loss : 0.0008933012\n", 502 | "Epoch : 344 Loss : 0.0008933012\n", 503 | "Epoch : 345 Loss : 0.0008933013\n", 504 | "Epoch : 346 Loss : 0.0008933014\n", 505 | "Epoch : 347 Loss : 0.00089330156\n", 506 | "Epoch : 348 Loss : 0.00089330156\n", 507 | "Epoch : 349 Loss : 0.00089330156\n", 508 | "Epoch : 350 Loss : 0.00089330156\n", 509 | "Epoch : 351 Loss : 0.00089330156\n", 510 | "Epoch : 352 Loss : 0.00089330156\n", 511 | "Epoch : 353 Loss : 0.0008933014\n", 512 | "Epoch : 354 Loss : 0.0008933013\n", 513 | "Epoch : 355 Loss : 0.0008933014\n", 514 | "Epoch : 356 Loss : 0.0008933014\n", 515 | "Epoch : 357 Loss : 0.0008933012\n", 516 | "Epoch : 358 Loss : 0.0008933012\n", 517 | "Epoch : 359 Loss : 0.0008933014\n", 518 | "Epoch : 360 Loss : 0.0008933013\n", 519 | "Epoch : 361 Loss : 0.0008933012\n", 520 | "Epoch : 362 Loss : 0.0008933014\n", 521 | "Epoch : 363 Loss : 0.0008933014\n", 522 | "Epoch : 364 Loss : 0.0008933015\n", 523 | "Epoch : 365 Loss : 0.00089330156\n", 524 | "Epoch : 366 Loss : 0.0008933017\n", 525 | "Epoch : 367 Loss : 0.00089330156\n", 526 | "Epoch : 368 Loss : 0.0008933018\n", 527 | "Epoch : 369 Loss : 0.0008933018\n", 528 | "Epoch : 370 Loss : 0.0008933018\n", 529 | "Epoch : 371 Loss : 0.0008933017\n", 530 | "Epoch : 372 Loss : 0.00089330156\n", 531 | "Epoch : 373 Loss : 0.0008933018\n", 532 | "Epoch : 374 Loss : 0.0008933018\n", 533 | "Epoch : 375 Loss : 0.0008933017\n", 534 | "Epoch : 376 Loss : 0.0008933018\n", 535 | "Epoch : 377 Loss : 0.0008933018\n", 536 | "Epoch : 378 Loss : 0.00089330156\n", 537 | "Epoch : 379 Loss : 0.0008933018\n", 538 | "Epoch : 380 Loss : 0.00089330156\n", 539 | "Epoch : 381 Loss : 0.0008933015\n", 540 | "Epoch : 382 Loss : 0.0008933015\n", 541 | "Epoch : 383 Loss : 0.00089330156\n", 542 | "Epoch : 384 Loss : 0.0008933015\n", 543 | "Epoch : 385 Loss : 0.0008933015\n", 544 | "Epoch : 386 Loss : 0.0008933015\n", 545 | "Epoch : 387 Loss : 0.00089330156\n", 546 | "Epoch : 388 Loss : 0.0008933017\n", 547 | "Epoch : 389 Loss : 0.0008933018\n", 548 | "Epoch : 390 Loss : 0.0008933018\n", 549 | "Epoch : 391 Loss : 0.0008933017\n", 550 | "Epoch : 392 Loss : 0.0008933017\n", 551 | "Epoch : 393 Loss : 0.00089330156\n", 552 | "Epoch : 394 Loss : 0.00089330156\n", 553 | "Epoch : 395 Loss : 0.00089330156\n", 554 | "Epoch : 396 Loss : 0.0008933015\n", 555 | "Epoch : 397 Loss : 0.0008933015\n", 556 | "Epoch : 398 Loss : 0.0008933014\n", 557 | "Epoch : 399 Loss : 0.0008933015\n" 558 | ] 559 | }, 560 | { 561 | "data": { 562 | "image/png": "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\n", 563 | "text/plain": [ 564 | "
" 565 | ] 566 | }, 567 | "metadata": {}, 568 | "output_type": "display_data" 569 | }, 570 | { 571 | "name": "stdout", 572 | "output_type": "stream", 573 | "text": [ 574 | "Epoch : 400 Loss : 0.0008933014\n", 575 | "Epoch : 401 Loss : 0.0008933014\n", 576 | "Epoch : 402 Loss : 0.0008933014\n", 577 | "Epoch : 403 Loss : 0.0008933014\n", 578 | "Epoch : 404 Loss : 0.0008933012\n", 579 | "Epoch : 405 Loss : 0.0008933012\n", 580 | "Epoch : 406 Loss : 0.0008933014\n", 581 | "Epoch : 407 Loss : 0.0008933013\n", 582 | "Epoch : 408 Loss : 0.0008933014\n", 583 | "Epoch : 409 Loss : 0.0008933014\n", 584 | "Epoch : 410 Loss : 0.0008933013\n", 585 | "Epoch : 411 Loss : 0.0008933014\n", 586 | "Epoch : 412 Loss : 0.0008933012\n", 587 | "Epoch : 413 Loss : 0.0008933012\n", 588 | "Epoch : 414 Loss : 0.0008933012\n", 589 | "Epoch : 415 Loss : 0.0008933012\n", 590 | "Epoch : 416 Loss : 0.0008933012\n", 591 | "Epoch : 417 Loss : 0.0008933011\n", 592 | "Epoch : 418 Loss : 0.0008933012\n", 593 | "Epoch : 419 Loss : 0.0008933012\n", 594 | "Epoch : 420 Loss : 0.0008933012\n", 595 | "Epoch : 421 Loss : 0.0008933013\n", 596 | "Epoch : 422 Loss : 0.0008933013\n", 597 | "Epoch : 423 Loss : 0.0008933012\n", 598 | "Epoch : 424 Loss : 0.0008933011\n", 599 | "Epoch : 425 Loss : 0.0008933011\n", 600 | "Epoch : 426 Loss : 0.0008933011\n", 601 | "Epoch : 427 Loss : 0.0008933011\n", 602 | "Epoch : 428 Loss : 0.0008933011\n", 603 | "Epoch : 429 Loss : 0.0008933012\n", 604 | "Epoch : 430 Loss : 0.0008933011\n", 605 | "Epoch : 431 Loss : 0.0008933011\n", 606 | "Epoch : 432 Loss : 0.0008933011\n", 607 | "Epoch : 433 Loss : 0.0008933011\n", 608 | "Epoch : 434 Loss : 0.0008933011\n", 609 | "Epoch : 435 Loss : 0.0008933011\n", 610 | "Epoch : 436 Loss : 0.000893301\n", 611 | "Epoch : 437 Loss : 0.0008933012\n", 612 | "Epoch : 438 Loss : 0.0008933012\n", 613 | "Epoch : 439 Loss : 0.0008933012\n", 614 | "Epoch : 440 Loss : 0.0008933012\n", 615 | "Epoch : 441 Loss : 0.0008933012\n", 616 | "Epoch : 442 Loss : 0.0008933012\n", 617 | "Epoch : 443 Loss : 0.0008933012\n", 618 | "Epoch : 444 Loss : 0.0008933012\n", 619 | "Epoch : 445 Loss : 0.0008933012\n", 620 | "Epoch : 446 Loss : 0.0008933012\n", 621 | "Epoch : 447 Loss : 0.0008933012\n", 622 | "Epoch : 448 Loss : 0.0008933012\n", 623 | "Epoch : 449 Loss : 0.0008933013\n", 624 | "Epoch : 450 Loss : 0.0008933012\n", 625 | "Epoch : 451 Loss : 0.0008933013\n", 626 | "Epoch : 452 Loss : 0.0008933012\n", 627 | "Epoch : 453 Loss : 0.0008933013\n", 628 | "Epoch : 454 Loss : 0.0008933012\n", 629 | "Epoch : 455 Loss : 0.0008933012\n", 630 | "Epoch : 456 Loss : 0.0008933012\n", 631 | "Epoch : 457 Loss : 0.0008933012\n", 632 | "Epoch : 458 Loss : 0.0008933012\n", 633 | "Epoch : 459 Loss : 0.0008933012\n", 634 | "Epoch : 460 Loss : 0.0008933012\n", 635 | "Epoch : 461 Loss : 0.000893301\n", 636 | "Epoch : 462 Loss : 0.000893301\n", 637 | "Epoch : 463 Loss : 0.000893301\n", 638 | "Epoch : 464 Loss : 0.0008933011\n", 639 | "Epoch : 465 Loss : 0.000893301\n", 640 | "Epoch : 466 Loss : 0.0008933012\n", 641 | "Epoch : 467 Loss : 0.0008933011\n", 642 | "Epoch : 468 Loss : 0.0008933011\n", 643 | "Epoch : 469 Loss : 0.000893301\n", 644 | "Epoch : 470 Loss : 0.000893301\n", 645 | "Epoch : 471 Loss : 0.0008933011\n", 646 | "Epoch : 472 Loss : 0.0008933012\n", 647 | "Epoch : 473 Loss : 0.0008933012\n", 648 | "Epoch : 474 Loss : 0.0008933012\n", 649 | "Epoch : 475 Loss : 0.0008933012\n", 650 | "Epoch : 476 Loss : 0.0008933012\n", 651 | "Epoch : 477 Loss : 0.0008933012\n", 652 | "Epoch : 478 Loss : 0.0008933012\n", 653 | "Epoch : 479 Loss : 0.0008933012\n", 654 | "Epoch : 480 Loss : 0.0008933012\n", 655 | "Epoch : 481 Loss : 0.0008933012\n", 656 | "Epoch : 482 Loss : 0.0008933012\n", 657 | "Epoch : 483 Loss : 0.0008933012\n", 658 | "Epoch : 484 Loss : 0.0008933012\n", 659 | "Epoch : 485 Loss : 0.0008933012\n", 660 | "Epoch : 486 Loss : 0.0008933012\n", 661 | "Epoch : 487 Loss : 0.0008933012\n", 662 | "Epoch : 488 Loss : 0.0008933012\n", 663 | "Epoch : 489 Loss : 0.0008933012\n", 664 | "Epoch : 490 Loss : 0.0008933012\n", 665 | "Epoch : 491 Loss : 0.0008933012\n", 666 | "Epoch : 492 Loss : 0.0008933012\n", 667 | "Epoch : 493 Loss : 0.0008933012\n", 668 | "Epoch : 494 Loss : 0.0008933012\n", 669 | "Epoch : 495 Loss : 0.0008933012\n", 670 | "Epoch : 496 Loss : 0.0008933012\n", 671 | "Epoch : 497 Loss : 0.0008933012\n", 672 | "Epoch : 498 Loss : 0.0008933012\n", 673 | "Epoch : 499 Loss : 0.0008933012\n" 674 | ] 675 | }, 676 | { 677 | "data": { 678 | "image/png": "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\n", 679 | "text/plain": [ 680 | "
" 681 | ] 682 | }, 683 | "metadata": {}, 684 | "output_type": "display_data" 685 | } 686 | ], 687 | "source": [ 688 | "# Training loop\n", 689 | "for epoch in range(500):\n", 690 | " _, t_loss = sess.run([optimizer, Loss], feed_dict={X:x, Y:y})\n", 691 | " \n", 692 | " print(\"Epoch : \", epoch, \" Loss : \", t_loss)\n", 693 | " \n", 694 | " if epoch ==0 :\n", 695 | " y_pred = sess.run(h, feed_dict={X:x})\n", 696 | " plt.plot(x, y, 'r.')\n", 697 | " plt.plot(x, y_pred, 'b.')\n", 698 | " plt.show()\n", 699 | " elif (epoch+1) % 100 == 0 :\n", 700 | " y_pred = sess.run(h, feed_dict={X:x})\n", 701 | " plt.plot(x, y, 'r.')\n", 702 | " plt.plot(x, y_pred, 'b.')\n", 703 | " plt.show()" 704 | ] 705 | } 706 | ], 707 | "metadata": { 708 | "kernelspec": { 709 | "display_name": "Python 3", 710 | "language": "python", 711 | "name": "python3" 712 | }, 713 | "language_info": { 714 | "codemirror_mode": { 715 | "name": "ipython", 716 | "version": 3 717 | }, 718 | "file_extension": ".py", 719 | "mimetype": "text/x-python", 720 | "name": "python", 721 | "nbconvert_exporter": "python", 722 | "pygments_lexer": "ipython3", 723 | "version": "3.6.5" 724 | } 725 | }, 726 | "nbformat": 4, 727 | "nbformat_minor": 2 728 | } 729 | --------------------------------------------------------------------------------