moduPlayGround / DeepLearning-Basic

모두를 위한 딥러닝 기초 코스 입니다.
4 stars 4 forks source link

[질문] Lab 05 - CSV reading using tf.decode_csv #15

Open socome opened 5 years ago

socome commented 5 years ago

lab 05에 Exercise에서 나온 'CSV reading using tf.decode_csv' 방법 해보신 분 계신가요?

https://github.com/socome/ML_study/blob/master/Lec05-2-exercise.ipynb

노력하고 있는데 잘 안되네요.. 이미 해보신 분들의 조언 부탁드립니다.

lini1634 commented 5 years ago

cost/loss function

cost = -tf.reduce_mean(Ytf.log(hypothesis)+(1-Y)tf.log(1-hypothesis)) 이렇게 되어있는데 reduce_sum 이 빠진것같아요 cost=tf.reduce_mean(-tf.reduce_sum(Ytf.log(hypothesis)+(1-Y)tf.log(1-hypothesis))로 해보세욥

socome commented 5 years ago

https://github.com/socome/ML_study/blob/master/Lec05-2(realdatatest).ipynb

단순히 batch만 사용하려고합니다. 추가로 구한 W,b값의 정확도를 확인하려면 어떻게 코딩할 수 있을까요?

lini1634 commented 5 years ago

reduce_sum이 문제가 아닌것같네요 ㅠ 이전 강의에서 cost function을 tf.reduce_mean(-tf.reduce_sum(Ytf.log(hypothesis)+(1-Y)tf.log(1-hypothesis))) 라고 강의자료에 나와있었는데 구현할때는 또 tf.reduce_sum이 없네요 더 공부해봐야겠습니당 ..

unizard commented 5 years ago

본 이슈를 해결해주시는 분! 스벅 쏩니다. 두둥!

lini1634 commented 5 years ago

https://github.com/socome/ML_study/blob/master/Lec05-2(realdatatest).ipynb

단순히 batch만 사용하려고합니다. 추가로 구한 W,b값의 정확도를 확인하려면 어떻게 코딩할 수 있을까요?

socome님이 올려주신 저 코드에 학습률 높이고 더 많이 출력하니까 0 0.9638013 500 0.47303903 1000 0.47186226 1500 0.47170252 2000 0.47167614 2500 0.47167164 3000 0.4716709 3500 0.47167075 4000 0.4716708 4500 0.4716708 5000 0.47167072 5500 0.47167072 6000 0.47167072 6500 0.47167072 7000 0.47167072 7500 0.47167072 8000 0.47167072 8500 0.47167072 9000 0.47167072 9500 0.47167072 10000 0.47167072 10500 0.47167072 11000 0.47167072 11500 0.47167072 12000 0.47167072 12500 0.47167072 13000 0.47167072 13500 0.47167072 14000 0.47167072 14500 0.47167072 15000 0.47167072 15500 0.47167072 16000 0.47167072 16500 0.47167072 17000 0.47167072 17500 0.47167072 18000 0.47167072 18500 0.47167072 19000 0.47167072 19500 0.47167072 20000 0.47167072

cost가 엄청 작진 않지만 일정한 값으로 나오는데 이게 그럼 최소화 된거 아닌가요?? local minimize 인건가요..?/

socome commented 5 years ago

일단 위의 코드는 일반 예제파일로 학습률을 늘리신것 같습니다. (즉, batch 코드가 추가되지 않은 예제 파일입니다.)

이후 강의를 들으면서 어떻게 해결한것 같기도 하면서 아닌것 같기도 한데.. (for문을 두번 돌리고, epoch와 batch를 추가했습니다.)

https://github.com/socome/ML_study/blob/master/Lec05_2_exercise_final.ipynb

Epoch와 batch를 사용해서 ('lab 7-2'에서 일반적이라고 하네요..) 하니까 avg_cost가 감소하였고, 'lab 7-2'에서 배운것처럼 diabetes.csv 파일의 일부는 train하는데, 일부는 test하는데 사용했을때 정확도가 70퍼센트정도 나왔습니다.

다만!!!!!!!!! 여기서 또 궁금증이 생긴것은 기존에 파일에서는 cost_val를 출력했다면 이번에는 avg_cost를 출력했는데, avg_cost와 cost_val의 의미상 차이를 모르겠습니다.

제가 처음올렸던 질문에서 cost의 진동이 나타나는 이유가 단순히 각 batch의 학습 후 코스트값이기 때문에 눈에보이는 print값만 진동할뿐 실제학습과정에서 유의미한 값을 보여준 것일까? 하는 의문도 생기네요

lini1634 commented 5 years ago

socome님이 올려주신 저 코드에서 from google.colab import files uploaded = files.upload() 을 추가해서 제가 미리 다운 받아놓은 data-03-diabetes.csv파일 사용했어요 data-03-diabetes.csv(application/vnd.ms-excel) - 53438 bytes, last modified: 2018. 11. 19. - 100% done Saving data-03-diabetes.csv to data-03-diabetes.csv 그래서 batch코드 추가한 파일 맞습니당 ~ 아까 socome님이 올려주신 자료 보면서 더 공부해보려 했는데 자료 지우셨네요 ㅠ 혹시 다시 올려주실수 있을까요 ..?

socome commented 5 years ago

어떤자료를 올려드리면될까요?!

batch normalization에 관한 자료들 이야기

하시는거 같아서 링크 공유해드릴게요!!

http://sacko.tistory.com/m/44

그리고

https://github.com/socome/ML_study/blob/master/Lec05-2-exercise.ipynb

이 코드에서 학습률을 늘리면 cost값이 수렴하나요...? 한번확인해보겠습니다!!

그리고 cost값은 실제 데이터와 가정 값의 차이인데 학습이 진행될수록 그 차이가 수렴하는것도 이상하네요...흠

이슈확인이 잘 안될수도 있으니 단톡방에서든 개인톡이든 주시면(제이름은 김지원입니다.) 필요하신 정보 바로 공유해드릴게요!!

hyj378 commented 5 years ago

올려주신 코드 뒷부분만 조금 바꿔서 출력해봤습니다

      avg_cost = 0
      total_batch = int(524/batch_size_a)
      for i in range(total_batch):
          x_batch, y_batch = sess.run([train_x_batch, train_y_batch])
          cost_val, _ = sess.run([cost,train], feed_dict={X:x_batch, Y:y_batch})  
          print("\nchange :", avg_cost)
          avg_cost += cost_val / total_batch

      print("\n\n\nCost:",avg_cost) 

    coord.request_stop()
    coord.join(threads)

혹시 cost가 batch데이터 덩어리를 기준으로 구한 오차값이고 avg_cost는 덩어리를 데이터로 쪼개 구한 오차값들을 평균을 구한것 이여서 avg_cost를 통해 더 정확한 오차값을 얻을 수 있는것 아닐까요??

(그런데 생각해보니까 덩어리로 cost를 구한다는게 같은말 같네요 죄송합니다...)

검색해보니 학습의 결과인 cost_val을 알아보기 위해 avg_cost에 담습니다. 라는 글이 있습니다. Epoch와 batch를 이용하면서 cost를 구할때 필요한 값인것 같습니다. 결국 avg_cost와 cost는 같은것 인가봐요! [검색링크] : http://theyoonicon.com/07-mnist-data-%ED%95%99%EC%8A%B5%ED%95%98%EA%B8%B0/