Skip to content

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

Open

Description

@socome

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

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

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

  • 코스트값이 줄어들기보다 계속 진동하는데, 옳은 방법이 아닌 것 같다는 생각도 듭니다..

Activity

  1. lini1634 commented on Nov 19, 2018

    @lini1634

    cost/loss function

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

  2. socome commented on Nov 19, 2018

    @socome
    ContributorAuthor

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

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

  3. lini1634 commented on Nov 19, 2018

    @lini1634

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

  4. unizard commented on Nov 19, 2018

    @unizard
    Contributor

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

  5. lini1634 commented on Nov 21, 2018

    @lini1634

    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 인건가요..?/

  6. socome commented on Nov 21, 2018

    @socome
    ContributorAuthor

    일단 위의 코드는 일반 예제파일로 학습률을 늘리신것 같습니다.
    (즉, 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값만 진동할뿐 실제학습과정에서 유의미한 값을 보여준 것일까? 하는 의문도 생기네요

  7. lini1634 commented on Nov 21, 2018

    @lini1634

    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님이 올려주신 자료 보면서 더 공부해보려 했는데 자료 지우셨네요 ㅠ
    혹시 다시 올려주실수 있을까요 ..?

  8. socome commented on Nov 21, 2018

    @socome
    ContributorAuthor

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

    batch normalization에 관한 자료들 이야기

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

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

    그리고

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

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

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

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

  9. hyj378 commented on Nov 22, 2018

    @hyj378

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

          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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions