Keras predict_generator로 confusion matrix를 그렸을 때 accuracy가 안 맞는 오류 해결방안 정리
1. 문제
오늘 scikit-learn으로 작성했던 울음소리 감지 linear regression 모델을 TensorFlow로 다시 구현하는 과정에서 저지른 엄청난 삽질들에 대해 이야기해보려고 한다. ㅎㅎㅎㅎㅎ 신나!!^^
눈썰미가 빠른 분이라면 눈치챘을 것이다. GradientDescentOptmizer가 아니라 GradientDescentOptimizer니까..!^^ i 하나를 빼먹은 줄도 모르고 구글링을 오지게 했다…
텐서플로우 버전이 1.14.0인데 (노트북 교환받기 전에 설치했던) 2.0 버전인 줄 착각한 채로 구글링을 했더니 tf.train.GradientDescentOptimizer 대신 tf.keras.optimizers.SGD를 사용해야 한다는 스택오버플로우 답변을 발견했다.
tensorflow._api.v2.train이라면 아래의 링크를 참고하여 해결하면 된다.
module ‘tensorflow._api.v2.train’ has no attribute ‘GradientDescentOptimizer’
내 텐서플로우 API 버전은 tensorflow._api.v1.train인데 멍청하게 저 답변을 따라갔다. 왜냐하면 api 버전 빼고는 에러메세지가 너무나도 똑같았기 때문ㅋㅋ
tf.keras.optimizers.SGD의 minimize 메소드에는 인자로 loss function의 variables를 함께 전달해줘야 한다고 한다. 예제 코드 찾느라 이것저것 뒤지다 보니 1시간 넘게 삽질을 하고 있었다. ㅎㅎ
차라리 상위레벨의 Keras를 공부해서 쓰는 게 장기적으로 편하려나 별의 별 생각을 하다가 팀장오빠에게 하소연했더니 단번에 나의 오타를 발견해 주었다…
# Fixed Code
sess = tf.Session()
sess.run(tf.global_variables_initializer())
feed={X_holder: X_test, Y_holder: Y_test}
for step in range(50001):
sess.run(train, feed_dict=feed)
if step % 2000 == 0:
print(step, sess.run(cost, feed_dict=feed))
다시 한 번 되새긴다. KEEP CALM AND FIND YOUR TYPO…
기존 파일에서 이미 변수명으로 X, Y(numpy.ndarray)를 사용했었기 때문에 새로운 placeholder 변수로 X_holder, Y_holder를 선언했다.
하지만 내가 복붙했던 코드에서는 X와 Y를 placeholder로 사용하고 있었는데, 이게 너무나도 익숙했던 나머지 변수명이 잘못된 줄도 몰랐다. 다시 삽질을 시작했다..^^
구글링해보니 정말 다양한 가능성들이 존재했다. 텐서들의 shape을 다시 확인하고 datatype도 통일시켰다. 하지만 에러는 사라지지 않았다…
그렇게 또 1시간을 날렸던 것 같다. 수다 좀 떨면서 머리 식히고 코드를 위에서부터 다시 읽었다… 그렇게 원인을 발견했다… 변수명…
# Error
feed={X: X_test, Y: Y_test}
KEEP CALM AND FIND YOUR TYPO… READ THE WHOLE LINES…
이제 텐서플로우 모델을 model.json으로 저장하고 ml5.js와 연결해야지!!
Redis 소개 In-memory data structure storage disk 접근을 하지 않음 -> 속도가 빠르다 오픈소스(BSD 3) 제공되는 자료구조들 Strings, set, sorted-set, ...
MongoDB 클라우드 서비스를 SaaS로 제공하려다가 그 중 DB 서비스가 제일 잘 나가서 MongoDB가 됨 No Schema: JSON data 삽입 시 field가 생성됨 Document data model JSON data를 그대로 넣음 ...
웹 서버의 구동 방식에는 8가지가 있음(3페이지) Node.js는 비동기, non-blocking Server side Javascript Event driven Asynchronous Non-Blocking I/O ...
TensorFlow.js의 공식 모델 중 하나인 Speech command recognition에 대해 조사해 보았습니다. 원문 링크: tfjs-models/speech-commands at master · tensorflow/tfjs-models · GitHub
오늘 scikit-learn으로 작성했던 울음소리 감지 linear regression 모델을 TensorFlow로 다시 구현하는 과정에서 저지른 엄청난 삽질들에 대해 이야기해보려고 한다. ㅎㅎㅎㅎㅎ 신나!!^^
0. 목표 TensorFlow로 작성한 모델(SavedModel)을 ml5.js에 접목하기 위해 TensorFlow.js로 변환(model.json) Python-to-Javascript GitHub - tensorflow/tfjs-converter: ...
이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.
이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.
이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.
소프트웨어 마에스트로 과정에서 아기 울음소리를 인식하고 분류하는 딥러닝 모델을 작성하고 있습니다. GitHub에 공개되어 있는 소리 데이터셋을 사용하기 위해 확인한 라이센스 몇 가지를 정리해 보았습니다. 참고한 곳: CC 라이선스 :: Creative Commons K...
이 포스트는 What Is The Difference Between A URI And A URL? - DEV Community 👩💻👨💻 를 참고하여 작성되었습니다.
이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.
Github 블로그를 드디어 개설했습니다.🎉