- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 권철민 선생님 안녕하세요, 딥러닝 cnn 완벽 기초 강의를 모두 수강 하고 복습을 하던 중에, 활성화 함수의 전반적인 개념, 특히 ReLu 함수에 대해 질문이 있습니다. 우선 활성화 함수가 필요한 이유는 모델의 복잡도를 올리기 위해서라고 이해했습니다. 단순 퍼셉트론에서 XOR 문제를 해결할 수 없었던 문제를 해결하기 위해 MLP가 등장했고, 여기에서 step function이 활성화 함수로 사용되어 이전 층의 결과값을 함수에 집어 넣어 다음 층으로 전달하는 역할을 맡게 되었습니다. 하지만 MLP를 넘어 더 많은 히든 레이어를 쌓아 올리는 DNN의 경우, 선형 함수의 특성상 이를 여러번 겹쳐서 쌓아 올려도 결국에는 하나의 선형 함수로 표현할 수 있기 때문에 복잡도를 올리기 위해 레이어를 더 쌓는 의미가 없다고 이해했습니다.(물론 이렇게 쌓을 경우 레이어마다 가중치가 생기기 때문에 아예 의미가 없다고는 할 수 없겠으나, 모델 자체의 복잡도를 올리기 위한 목적에는 부합하지 않는다고 생각하고 있습니다). 단순한 퍼셉트론을 넘어 다층 퍼셉트론에서는 기존의 단층 퍼셉트론만을 활용했을 때는 풀 수 없었던 복잡도의 문제 해결이 가능해졌지만, 동일한 방법으로는 아무리 레이어를 쌓아도 더욱 복잡한 문제는 풀 수 없었습니다. 때문에, 더욱 복잡한 문제를 풀기 위해서 모델의 복잡도를 올리기 위해서는 선형 활성화 함수를 여러개 사용하여 쌓아도 결국 하나의 레이어를 사용하여 나타낼 수 있는 상황을 막아야 하기 때문에 이와 반대로 비선형 활성화 함수를 사용한다고 이해하고 있습니다. 비선형 활성화 함수들의 예시로 시그모이드, 하이퍼볼릭 탄젠트와 같이 shape 자체가 비선형인 함수들이 각광받았는데, 작은 미분값으로 인해 깊은 네트워크로 갈수록 역전파 과정에서 발생하는 Gradient Vanishing 문제, 그리고 양극단으로 값이 모일수록 명확성이 떨어진다는 단점때문에 히든 레이어의 활성화 함수로는 더는 차용되지 않는다고 이해하고 있습니다. 이러한 기울기 소실 문제를 해결하기 위해 대부분의 은닉층에서는 활성화 함수로 ReLu함수를 사용한다고 이해하고 있는데요, 렐루 함수일 경우 ReLu(-1) + ReLu(1) != ReLu(-1 + 1)이기 때문에 비선형 함수이지만, (음의 무한대, 0] 그리고 [0, 양의 무한대) 구간에서는 선형이라고 알고 있습니다. 이를 고려한다면 ReLu 함수는 비록 전체 구간에서는 비선형 함수이지만, 대부분의 구간에서는 선형 함수인데 이러한 부분을 고려할 때 어떻게 ReLu 함수를 사용할 때 저희가 시그모이드와 같은 함수에서 기대하는 것과 같은 비선형적인 특성으로 모델의 복잡도를 올려줄 수 있는것인지 직관적으로 잘 와닿지가 않습니다. 또한, CNN 연산 적용 후 ReLu 함수를 적용하는 부분이 궁금합니다. 이미지의 특정 영역에 filter값을 곱해서 특정을 추출하는 feature extracting 과정에서 합성곱 연산의 값이 크게 나올수록 이미지의 해당 영역이 해당 필터가 추출하고자 하는 값(가로, 세로, 커브 모양 등등)을 강하게 나타내고 있다고 이해하였는데요, 그렇다면 이렇게 추출되서 생성된 새로운 feature map에 ReLu 함수를 적용하는 이유는 모델의 복잡도를 올리기 위해 비선형적인 함수를 추가하는것 뿐만 아니라 예를 들어서 가로 선을 추출하기 위한 필터를 통과했을 경우, 값이 커서 가로에 해당할 확률이 높은 부분은 그대로 유지하되, 음수로 결과가 나와 가로의 특성과는 전혀 맞지 않는 특성을 모두 0으로 만들어서 가로 특징이 없다고 정리하는 역할 또한 존재할까요? 혹시 제가 놓친 ReLu 함수를 CNN의 활성화 함수로 쓰는 이유가 있다면 지적 부탁드립니다. 이미지의 픽셀은 0~255의 값으로 구성된다고 알고 있는데 음수일 경우도 존재할까요? 만약 합성곱 연산의 결과로 음수값이 나왔다면 어떻게 해석하는지 궁금하고 또 이럴 경우 filter의 weight가 음수로 크게 설정되어 있어서 발생하는 경우인지도 궁금합니다. 그리고 CNN 모델의 진행 과정에서, 입력층과 가까운 Conv layer일수록 이미지의 edge, textile같은 low level 특징을 추출하는 것에서 출력층과 가까울수록 더욱 더 추출된 특징들을 일반화 시킨다고 이해했는데 제가 맞게 이해했을까요? 마지막으로 그렇다면 이때 각 filter마다 이미지 안에 가로, 세로, 혹은 다양한 모양들의 곡선적인 특징들이 존재하는지에 대해 추출하는 역할을 담당하게 될것이라고 예상되는데, 이렇게 필터마다 작업이 할당되는 자세한 로직이 알고싶다면 어떤 분야에 대해 더 공부해보아야 할지 추천 부탁드리겠습니다. 현재 머리속에서 너무 많은 부분들이 정리가 안되어서 글이 장황해진점 너무 죄송합니다. 혹시 제가 어떤 의도로 질문을 드린건지 잘 파악이 안되시는 부분이 있다면 풀어서 써보겠습니다. 항상 감사합니다 선생님!
안녕하세요!! 선생님!!! ㅎㅎㅎ 장고 다운로드 로딩에 대하여 질문드리려 합니다!! (웹은 장고로만 개발하였습니다!!) 제가 구현한 내용은 단순히 모델을 불러와서 가공후 csv 파일로 response하는 view를 만들었습니다! 그래서 다운로드 버튼을 클릭하면 모델에 있는 데이터가 다운이 되는 그러한 로직입니다! 위와 같이 그냥 요청이 오면 모델을 불러와서 응답해주는?? 단순한 view입니다!ㅎ 다만 join이 많이 걸려있고 데이터가 좀 많다보니 시간이 상당히 많이 소요가 되는데요.. 문제가 다운로드버튼(위에 설명한 view와 연결한버튼)을 클릭 한 후 서버가 이를 처리를 하는데 서버자체가 이 작업을 끝날때 까지 먹통이되는? (제 3자가 웹에 접속했을때도 이 처리 때문에 위 처리가 끝날때 까지 아무런 요청을 할 수 없습니다) 문제가 발생합니다.. 제가 사용한 서버는 AWS EC2를 활용해 도커 compose파일로 nginx, gunicorn, mariadb를 연결해서 하나의 서비스로 만들어 배포하였습니다. 또한 로드밸런서 세팅도 되있습니다. 로컬에서 개발서버로 테스트 할때는 그냥 다운로드 버튼을 클릭을 해도 바로 종료가 가능하고 다른 브라우저로 접근해도 독립적으로 작동했는데 배포를 하니깐 위와 같은 현상이 발생하네요! 서버 성능의 문제인가 해서 인스턴스 유형도 좀더 올려보고 했지만 역시 위문제는 해결되지 않았습니다..ㅠ 그래서 뭔가 비동기적으로 처리하기위해서 celery를 이용해 볼까 했는데 잘못된 접근인건지 잘모르겠지만 피라미터를 어떻게 설정해야할지 몰라서 구현에 실패를 했습니다 ㅠ 서버의 문제라면 어떻게 접근을 해야하는지,,,,, 아니면 장고로 위와 같은 문제가 해결이 가능하다면 어떻게 코드를 작성하면 좋을지 부족한게 많다보니 며칠째 해결이 안되네요 ㅠㅠ 부족한 설명이지만 잘 부탁드리겠습니다!! 너무 감사합니다 선생님!!
강의 듣는 중 질문이 있습니다. 저는 사람을 인식하는 프로젝트를 만드는 중입니다. 제가 생각하고 있는 학습 방법의 과정은 1) 맨처음 학습=> 우수한 학습모델을 가져와서 3가지 의 객체를 인식하는 데이터를 학습시킨다 (이번 강의로 감을 잡음) 2) 1에서 학습된 모델 을 사용하다가 인식할 객체의 추가 를 위해 1의 모델 을 load후 추가로 객체의 데이터 를 추가학습시킨다 (지속적으로 label을 추가 시킬수 있는 모델을 만드는것이 목적) 질문) 2번과정에서 추각 학습을 할때 추가시킬 데이터만 학습을 시키면 되는건가요? 아니면 모든 객체를 처음부터 다시 학습시켜야 하나요? => 제가 원하는 방향은 추가 데이터만 학습을 시켜도 기존에 학습시켯던 label과 추가 label을 전부 검출하는것 입니다.
유튜브 보다 인프런 강의까지 오게되었는데 듣다 궁금한 부분이 있어서 질문드립니다. %timeit을 해서 확인해보니 1) df["Name"][0] 2) df.loc[0."Name"] 3) df.loc[0]["Name"] - 유튜브에서는 1)과 2)를 비교해주셨고, - 인프런에서는 2)와 3)을 비교해주시면서 2)가 접근속도가 더 빠르다고 하였는데 1)이 가장 빠르다고 나와서 이에 대한 다른 이유?가 있는지 궁금해서 문의드립니다.
안녕하세요 인프런 강의를 듣기전 docker 공부를 하고있는 사람입니다. pip freeze > requirments.txt 하고 난 뒤 버전정보가 숫자가아닌 경로로 나오는 경우는 어찌해야 할지 모르겠네요 aiohttp @ file:///C:/ci/aiohttp_1602530153430/work
안녕하세요. 학습을 최근에 시작한 초급자입니다. 현재 장고 프로젝트 생성하여 생성된 폴더와 파일들이 무슨 기능을 하는 지에 대해 듣고 있습니다. 첫 번째 질문입니다. 제가 학습해나가는 것을 TIL로 깃헙에 올리고 싶은데, 코드는 똑같이 안쓰고 참고하여 다른 예시로 작성하면 된다면 이런 개념적인 부분들은 출처와 함께 그대로 써도 되는지 아니면 표현을 달리 해서 올리면 되는 지 알고 싶습니다. 이에 대해 먼저 묻고 작성하는 것이 예의인 것 같아 여쭤봅니다. 앞으로의 내용이 참 기대됩니다. 두 번째 질문입니다. 강의 시작 전에 SQL에 대해서 알고 있어야 하나요???
[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
강의를 보고 똑같이 따라해도 None으로 출력이되어 구글링 하여 알아본 결과 잘 실행되어서 다른 분들도 보시라고 올립니다. http GET http://localhost:8080/login user_name==dave pw==1111 email_address==korea@naver.com 이런식으로 & 나 \ 를 작성하지 않고 하시면 제대로 작동합니다
simon님 안녕하세요 dictionary 실습 강의 중 궁금한 것이 생겼는데요, a['thing'] = a.pop('fruit') 을 실행하면 결과값이 'thing' : 'banana'가 되는 이유는 무엇인가요? print(a.pop('fruit')을 실행하면 'banana'가 출력되는데 a['thing'] = 'banana' 이니까 바나나의 자리에 thing 이 되어야 하는 거 아닌가요? thing이 바나나라는 value를 찾아 해당하는 key 값에 thing이 대입되는 과정이 궁금합니다!
https://docs.djangoproject.com/en/4.0/ref/forms/validation/ 공식문서에서는 error code 를 제공하는 것을 권장하고 있습니다. 이는 항상 지켜야 하는 걸까요? 선택의 기준이 있는지 궁금합니다. 강의 내에서는 안쓰는 것 같기도 하고요 감사합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 실행을 누르면 결과가 출력되지 않고(간단한 print 조차도) conda run -no-capture-output --live-stream python 이런 메세지만 떳다가 사라집니다 . 갑자기 이런현상이 발생했는데 어떻게 해야하나요 ㅠㅠ
선생님, 사용자 패턴을 학습해서 목적지 예측을 하는 모델을 구현하고 싶습니다. 현재 아래와 같은 Sample Dataset을 만들었는데요 :) 데이터 전처리를 어떻게 해야할지 잘 모르겠습니다. 일단 day_of_week 피처는 원핫 인코딩으로 처리하려고 하고 출발 시간 피처(hour,min)은 log 값으로 scaling 하려고 합니다. 여기까지는 올바른 방향이 맞을까요? 또 시작 좌표(start_lat, start_lon)와 목적지 좌표(end_lat, end_lon) 를 어떻게 처리해야할까요? 일단 제가 생각한 것은 각각 좌표 지점을 군집화하여 원핫 인코딩으로 바꾸는 것을 생각했습니다. 아직 군집화 수업을 듣기 전이라 이것도 맞는 방향인지 모르겠습니다. 선생님께서 생각하는 방향과 제가 생각한 방향이 일치할지 모르겠습니다. 또 제가 잘못 생각하고 있는 부분이 있으면 말씀부탁드려요 :)
파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
안녕하세요 좋은 강좌 감사합니다 파이썬 3.8.1 윈도우즈인데요 가상환경에 들어가서 python 치고 실행하면 제대로 설치된걸로 나오는데요 which python치면 which : 'which' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포 함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + which + ~~~~~ + CategoryInfo : ObjectNotFound: (which:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 이런 에러가 나옵니다 ㅠㅠ 인터프리터 문제인가 해서 쉬프트 컨트롤 p눌러서 인터프리터를 해당 가상환경 폴더의 scripts/python으로 지정했습니다(이렇게 하는게 맞는건지는 모르겠지만요) 그리고 which python치면 같은 에러가 계속 나옵니다
안녕하세요 이미지 데이터를 가지고 학습 및 평가를 하고 있습니다. 모델 별(ResNet, Inception 등) 전이학습을 하고 있고 데이터수는 Train(약 2000장), Valid(약 250장), Test(약 250장) 정도로 구성되어 있습니다. 이 때 질문을 드리고 싶은 것이 몇가지 있는데 초보라 모르는 것이 많아 문의를 드립니다. 많은 조언 부탁 드립니다. 1. 다음과 같이 Valid Accuracy나 Loss 가 위아래 편차가 굉장히 심한데 어떤것이 문제이며 무엇을 바꿔야 하는지 궁금합니다. 2. 위와 같은 경우에 Accuracy를 몇이라고 해야 하는 것일까요? 평균 or 최대값 or 최소값? 3. Keras(tensorflow)를 사용하여 수행중인데 Train, Valid 등은 API내에 예제가 많이 있는데 Test(Evaluation?)에 관한 코드는 잘 없는데, 보통 Valid 까지 수행하나요 아니면 Evaluation 까지 진행해야 하는 것일까요? 4. Keras API를 사용해서 전이학습을 진행중인데 아래와 같이 conv_base에서 include_top=False, conv_base.trainable=False로 해도 전이학습의 효과가 있는 것인지, conv_base의 특정 Layer 부터 동결 혹은 학습을 할 수 있는 방법이 있는 것인지 궁금합니다. 감사합니다.
다른 모델 강의와 다르게 최종 Evaluation 과정이 나와있지 않아 질문드립니다. 테스트데이터도 TFRecord 형태로 변환한 뒤 tf2의 eval.py 혹은 efficientdet_keras_test.py 모듈을 사용하면 되는 것인지, AutoML EfficientDet 모델의 Evaluation 과정을 어떻게 진행하면 되는지 알고싶습니다.
클래스 변수를 이용한 코드를 혼자서 작성하다가, 조금 궁금한 부분이 있어 질문드립니다. 사람이 가방에 물건을 넣는 동작을 클래스로 구현해보고자 했는데요 class Person : bag = [] def put_bag ( self , stuff ): self . bag . append ( stuff ) james = Person () james . put_bag ( '책' ) maria = Person () maria . put_bag ( '열쇠' ) print ( james . bag ) print ( maria . bag ) 다음과 같이 bag 라는 클래스 변수를 선언하고, 코드를 실행해보니 james.bag와 maria.bag를 출력한 결과가 같게 나왔습니다. 각각 다른 인스턴스를 생성하여 bag에 물건을 넣었는데도 결과가 같게 나온 이유를 생각해 보았는데요... james . put_bag ( '책' ) 이 코드를 실행하면 def put_bag ( self , stuff ): self . bag . append ( stuff ) 이 메소드에서 self에는 james가 할당되므로 결과적으로 james.bag.append('책') 이 실행될 것입니다. 그런데 코드 상에서 james 인스턴스는 bag라는 변수가 네임스페이스에 존재하지 않으므로, 그 대신 Person 클래스의 네임스페이스에서 bag 변수를 찾아 여기에 '책'을 넣었다고 생각을 하였습니다. 혹시 잘못된 부분이 있으면 설명 부탁드립니다. 감사합니다
안녕하세요! level 1을 마치고 level 2를 들을려고 합니다. level 2와 동시에 Django로 웹 개발공부를 해볼려고 합니다. 인프런에서 Django 로 코스를 선택했습니다. 그런데, 그 강좌에서 선수 파이썬 기본지식으로 `함수/클래스/상속/일급함수/장식자` 내용을 알아야 들을 수 있다고 하네요. 함수와 클래스는 Level 1에서 들었다고 하면 일급함수, 장식자는 TOC를 보면 Level2 에서 충분히 확인할 수 있는데, 상속은 어디서 들을 수 있는 건가요??? Level 3으로 가야 하나요????
안녕하세요! 이제 강의를 들을려고 합니다. 먼저 저의 상황은 이와 같습니다. Django를 통해 전체적인 웹개발에 대한 흐름을 공부해볼려고 시작합니다. 그 후, backend web 개발자나 Devops나 Data 분야로 가는 것을 결정해볼라고 합니다. Django에 대해 그냥 유튜브 검색을 해보니 [Django를 추천하지 않는 이유](https://www.youtube.com/watch?v=ObelJbEt8-Y) 를 보게 되었습니다. 이 영상에서 봤을 때, 웹 개발을 공부하고 싶으면 Django를 하지 말고 Spring을 해야 한다는 의견이었습니다. Django는 너무 dB에 집중되어 있다고 했습니다. 3년 전 영상이라 지금은 어떨지 모르겠습니다. java spring 시장이 한국에서 매우 거대하여 python Django가 상대적으로 적어도, 절대적으로는 적은 수는 아니라고 생각합니다. (그리고 python은 너무너무 가용성이 좋은 언어라 개인적으로 좋아하는 언어입니다 : ) ) 이에 대해 어떻게 생각하시는 지 궁금합니다.