├── .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 |
--------------------------------------------------------------------------------