| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 파이썬
- 선형회귀
- AI #Inductive_Bias #Relational_inductive_bias
- tensorflow #tensorflow-gpu #python #ubuntu #텐서플로우
- mnist
- git
- pandas #ewma #python #지수이동가중평균 #파이썬 #판다스 #ema #ewm
- version_error
- tf.where
- pandas #python #excel #판다스 #파이썬 #엑셀저장 #xlsxwriter
- ngrok
- SQL #PostgreSQL
- AI #RNN #LSTM #LSTMP #인공지능 #언어학습 #순차학습
- 비동기모듈
- Python
- SQL #python #MySQL #PostgreSQL
- pandas #python #date #datetime
- Asyncio
- 깃허브
- aiohttp
- python #pandas #data_preprocessing #data_process
- 깃
- TensorFlow
- Github
- MachineLearning
- 시계열데이터
- fashionmnist
- 특정값지우기
- 판다스 #Pandas #DataFrame #Statistics #통계 #파이썬 #Python #Resample
- REST_API
- Today
- Total
목록분류 전체보기 (24)
린스토리
API로 DL 모델을 실행하면서 동시에 다수의 모델을 train 시키고 싶었다. 이 과정에서 asyncio 라이브러리를 접하게 되었고, 이 라이브러리에 대해 개념을 설명하고자 한다. 동기와 비동기 "동기(Synchronous)"란 동시에 일어난다, 라는 뜻을 가지고 있다. 즉, 요청과 그 결과가 동시에 일어난다는 뜻이다. 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다. "비동기(Asynchronous)"란 동시에 일어나지 않는다, 라는 뜻을 가지고 있다. 즉, 요청과 그 결과가 동시에 일어나지 않을 것이라는 뜻이다. 이 둘은 상황에 따라 장단점이 있다. 동기 방식은 설계가 간단하고 직관적이지만 결과가 주어질 때까지 다른 작업을 하지 못하고 대기해야 한다는 단점이 있다. 비동기 ..
ML 모델을 서빙하기 위해 RestAPI로 만들어 배포하고자 했다. 이 과정에서 ML 모델을 모니터링 하는 시스템을 직접 구축하고자 했고, 실시간으로 Train의 결과를 뽑아 제대로 학습이 이루어지는지 확인하고 싶었다. 실시간 값 변동에 따라 출력값이 나오도록 하는 방법을 찾다가 Websocket을 알아보게 되었고, 공부하는 겸 한 번 더 정리해 기록을 남기기로 했다. API API는 어플리케이션 프로그래밍 인터페이스(Application Programming Interface)의 줄임말로, 어플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트이다. API의 가장 핵심은 "호출"과 "응답"이다. 예를 들어, 우편번호 찾기를 한다고 했을 때, 클라이언트는 '도로명 주소'를 입력해 서버에게 우편..
ML 모델을 Flask를 사용해 RestAPI로 만든 후, 비동기로 다수의 모델을 동시에 돌리고자 비동기모듈을 지원해주는 asyncio와 HTTP 요청을 위한 aiohttp를 활용해 모델을 호출했다. 그런데 한 모델을 호출할 때는 괜찮았는데, 2개 이상의 모델을 호출하고자 하면 제목과 같은 에러가 나오게 됐다. 한 번 모델을 호출했는데 거기에 하나 더 호출하고자 하니 서버 연결이 끊긴다는 건데.. 어떻게 해결하면 되는지 알아보자. 에러를 잡고자 검색을 하니 아래와 같은 설명을 발견했다. The server could limit the duration of a TCP connection. By default, aiohttp uses HTTP keep-alive so that the same TCP conn..
Tensorflow의 Tensor 값 중 특정 기준에 해당하는 값을 변경하는 일이 생겼다. Tensor는 불변의 값이라서 그냥 numpy array처럼 index를 이용해 값을 변경하는 것이 어려웠다. 그래서 tf.where를 활용해 값을 변경하는 법을 소개하고자 한다. 다음과 같은 tensor가 있다고 생각해보자. 이 tensor의 값 중에서 10 이상인 값을 10으로 대체하고 싶은 상황이라고 가정한다. 만약 tensor가 아니라 list 혹은 numpy array라면 index를 활용해 값을 변경할 수 있을 것이다. 하지만 tensor이기 때문에 이 방법을 사용할 수 없었다. (사용할 수 있는 방법이 있나..? 있으면 알려주세요..!) >> Flow 그래서 나는 다음과 같은 순서로 tensor의 값을..
딥러닝 모델을 서빙하는 과정에서 로컬 서버에서 api로 띄워놓고, 외부 노트북에서 접속해 train을 호출하는 구조로 만들고 싶었다. 회사 내부에서 로컬 서버를 구축해 사용하고자 하였고, 공용으로 쓰는 네트워킹이어서 별도 포트포워딩이 필요 없는 상태에서 test를 해보고 싶었다. 그래서 간단하게 Flask로 RestAPI를 만들어 내 노트북에서 api를 실행시켜 보도록 해보았다. Flask 간단하게 flask로 test 구문을 작성했다. from flask import Flask app = Flask(__name__) @app.route("/hello", methods=["GET"]) def hello(): return "hello world" if __name__ == "__main__": app.ru..
코드 실행을 하다가 str 변환 구문에서 에러가 났다. 왜 생긴 에러인지, 어떻게 해결하는지 알아보자. 에러가 나온 부분의 코드는 다음과 같았다. user = self.train_user_df['user_id'][row] # type: str hardware_label.setText(str(train_setting_log[str(user)]['hardware'])) user의 type을 print했을 때, 로 나온다. 두번째 줄의 코드에서 보면, dictionary의 키로 user를 넘기는데, 이미 str인 타입에 또 한 번 str로 감싼 것을 볼 수 있다. 은 다음과 같이 정의된다. 기본적으로 str로 형변환을 할 때, encoding default로 'utf-8'이 적용된다. 그런데 이미 타입이 st..
Key 와 Value로 이루어진 Dictionary에서 특정 value를 가진 key를 삭제하고 싶을 때, RuntimeError: dictionary changed size during iteration 이런 에러를 만났다. 해결하는 방법에 대해 알아보자. 이렇게 dictionary를 만들었다. value가 4000인 key를 지우고자 다음과 같이 코드를 작성해보았다. for key in test_dict.keys(): if test_dict[key] == 4000: test_dict.pop(key) 그랬더니, 이런 에러가 나왔다. Dictionary에서 값을 지우고 싶을 때는 두 가지 방법이 있는데, 1. Pop () 2. Del [] method를 사용하는 것이다. 두 방법의 차이점은, 1. Pop..
Tensorflow로 실행하다가 제목과 같은 에러가 발생했다. 에러 해결한 방법은 다음과 같다. Numpy Version 에러 Tensorflow version은 2.5.0 이고, Numpy version은 1.22.3 이었다. Numpy 버전이 맞지 않아 위와 같은 에러가 나왔고, Numpy 버전을 다운그레이드 해주어야 한다. 우선 기존에 설치되어 있던 numpy를 삭제해주었다. conda uninstall numpy 그리고 다시 numpy를 설치하는데, 버전을 낮추어 설치하였다. conda install numpy=1.19.5 -c conda-forge 이렇게 다시 설치해주니 에러없이 문제가 해결되었다.
1d 선형식은 y = wx + b 의 구조를 가지고 있다. 시계열 데이터에 대입하면, x는 시간 y는 시간에 대응하는 값이 될 것이다. (예시: 주가예측) 오늘은 1d Linear Regression을 간단하게 python으로 코드를 짜볼 것이다. 나는 이 Linear Regression을 x값 중간에 비어있는 시간에 대해 y값을 예측하는 용으로 사용했다. 데이터 구조 파악 우선 데이터의 구조를 보자. x는 시간이고, y는 실제값이다. 보면 중간 중간 끊겨있는 걸 확인할 수 있다. 이런 빈 값을 linear regression을 통해 채워주려고 한다. 데이터 가공 x는 시간 값이다. 위 그래프에서는 시간으로 표현하지 않았지만, 실제로는 시간의 흐름에 따른 데이터를 보여준다. 이 데이터에 linear re..
Git에 레퍼지토리를 생성하고, 파일을 업로드 해보는 것을 알아보자. 1. GitHub에 들어가 로그인을 하고, Repository를 생성해준다. 2. Repository 이름을 설정하고 생성한다. 3. 생성하면 다음과 같은 화면이 나온다. 4. 이제 터미널로 이동해서, git에 올릴 파일을 관리하는 local folder를 생성해준다. 5. folder 경로에서 터미널을 열고 다음과 같이 git을 초기화해준다. git init 6. git에 올릴 파일을 폴더내에 넣어준다. 7. 다음과 같이 진행하면 git에 파일을 올릴 수 있다. # 1. git add _ git에 올릴 파일을 추가해준다. # git이 git에 올라갈 파일을 tracking 할 수 있도록 add해준다. git add Readme.md ..