안녕하세요 강사님.. 제가 일주일이 넘는 기간 동안 계속 이것저것 시도를 해봤음에도 왜 분류 성능이 10%인지를 모르겠어서 실례를 무릅쓰고 질문을 올리게 되었습니다.. cifar10 이미지가 32 크기여서 128 정도로만 rescale을 했고, normalize도 진행했음에도 계속 성능이 10%대이고, loss는 줄어들었다가 갑자기 튀기도 하면서.. 제대로 학습이 되고 있지 않은 것 같습니다ㅠㅠ 바쁘시겠지만 문제의 원인이 무엇인지 여쭤보고 싶습니다ㅠㅠ 감사합니다.. https://drive.google.com/file/d/1FEsv1dex9y9I4AFqX42gBIhVeeOcgQXQ/view?usp=sharing
안녕하세여! 추가로 공부하면 좋은 알고리즘 비트-마스킹, 위상 정렬 등은 말씀주신 기준에 따르면 코테가 어려운 대기업에 붙으려면 해야하는 사항일까요?? 추가로 공부하면 좋은 알고리즘 관련해서 혹시 백준에서 어떤 문제들을 풀면 좋을지 추천 문제 리스트만이라도 노션에 올려주실 수 있으실까요..? 🙇🏻♂️
[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
메일 dream@fun-coding.org 이곳으로 질문하려고 하니, 제 계정이 수강하고 있지 않다고 오류가 발생하여 이곳에 질문을 남깁니다. 저는 벌써 '처음하는 SQL과 데이터베이스(MySQL) 부트캠프', '처음하는 MongoDB(몽고DB)와 NoSQL(빅데이터) 부트캠프'를 듣고 지금은 '파이썬 백엔드와 웬기술 부트캠프' 세개의 강좌를 수강했습니다. 저는 제가 개인적으로 연구한 연구내용을 백엔드를 이용하여 웹사이트에 시각화하는 웹사이트를 만들어보려고 했습니다. SQL 데이터를 벡엔드를 이용해 웹사이트에 시각화 하는 수업을 기대했지만 그런 내용은 들어있지 않았습니다 제가 직접 만들어보고자 준비를 할 때에 몇가지 질문이 있습니다. 다음은 수업 내용 중 'user_m gmt.py' 의 코드 내용입니다. class User ( UserMixin ): def init ( self , user_id , user_email , blog_id ): self . id = user_id self . user_email = user_email self . blog_id = blog_id def get_id ( self ): return str ( self . id ) @ staticmethod def get ( user_id ): mysql_db = conn_mysqldb () db_cursor = mysql_db . cursor () sql = "SELECT * FROM user_info WHERE USER_ID ='" + str ( user_id ) + "'" db_cursor . execute ( sql ) user = db_cursor . fetchone () if not user : return None user = User ( user_id = user [ 0 ], user_email = user [ 1 ], blog_id = user [ 2 ]) return user @ staticmethod def find ( user_email ): mysql_db = conn_mysqldb () db_cursor = mysql_db . cursor () sql = "SELECT * FROM user_info WHERE USER_ID ='" + str ( user_email ) + "'" db_cursor . execute ( sql ) user = db_cursor . fetchone () if not user : return None user = User ( user_id = user [ 0 ], user_email = user [ 1 ], blog_id = user [ 2 ]) return user @ staticmethod def create ( user_email , blog_id ): user = User . find ( user_email ) if user == None : mysql_db = conn_mysqldb () db_cursor = mysql_db . cursor () sql = "INSERT INTO user_info (USER_EMAIL, BLOG_ID) VALUES (' %s ',' %s ')" % ( str ( user_email ), str ( blog_id )) db_cursor . execute ( sql ) mysql_db . commit () return User . find ( user_email ) else : return user 이렇게 코드내용이 존재할 때, 로그인 하게 되면 user_id, user_email, blog_id 라는 컬럼을 가진 mysql_db db내용이 새로운 이름의 sql 파일이 따로 생겨서 저장되는 것인가요? 2. 이미지 파일을 sql파일에 x,y,r,g,b 컬럼을 만들고 (0,0) xy 좌표에 (100,200,100) 의 rgb 값이 있다는 의미로 0,0,100,200,100의 값을 모으고, 만약 32x,32의 크기를 가진 이미지가 있다면 1024의 값이 존재하는 이미지 정보를 sql 파일에 저장하고 이를 10000장 정도 보관하는 sql 파일을 만드는 경우가 있나요? 아니면 같은 방식으로 10000장의 이미지 파일을 json 파일로 변환하는 경우도 있나요? 3. 제가 만약 백엔드를 이용하여 sql파일의 내용을 웹사이트에 시각화하는 것이 가능한가요?
안녕하세요? PINN 이 무엇인지 매우 궁금하던 차에 인프런에서 강의가 개설되어 수강하게 되었습니다. 짧은 시간에 PINN 의 개념과 큰 그림을 이해하는데 매우 도움이 많이 된 강좌여서 정말 감사하다는 말씀을 먼저 드리고 싶습니다 ^^ 제조업체에서 AI 적용을 고민하는 직무에 있다보니 PINN 이 어떤 분야를 대체하기 위해 고안된 것인지 등... business 적용에 대한 몇 가지 질문을 드려 보고자 합니다. 일단 PINN 에 대한 저의 이해도가 정확한지 부터 확인하고 싶은데요, 네트워크 구조에는 다른 딥러닝 방법론과 차이점이 없어보이고, 변수에 미분방정식의 변수가, loss function 에는 지배방정식인 미분방정식이 적용되고, 해당 미분방정식을 규제해 주기 위한 초기값이나 경계조건도 Loss 에 반영되어야 한다는 것으로 이해했습니다. 그러다 보니 데이터가 없어도 학습이 가능하고, 일부데이터가 있다면 loss 값에 포함을 시켜서 모델의 오차를 보정시켜 주는 용도로 활용이 되는 것 같습니다. 제가 이해한 것이 맞는지요? 그렇다면 제조업계에서의 PINN 이 어느 분야에 잘 맞는지...에 대한 근본적인 질문을 드리고 싶은데요, 해당 시스템 behavior 를 설명할 수 있는 미분방정식이 명확하다는 말은, 그냥 해당 미분방정식에 수치를 넣어서 계산하면 딥러닝에 적용하는 것 보다 더 명확하고 신뢰도 높은 solution 을 얻게 될 것으로 생각이 되어서요.. 만약 CPU solving 자원이 넉넉하다면 굳이 PINN 적용 할 필요 없이 해당 분야에 신뢰도가 높은 지배방정식 자체를 사용해서 문제를 풀면 되는 것은 아닌지요? CAE solving 과정이 미분방정식을 푸는 과정이고 제조업체에서 명확한 지배방정식이 정의 될 수 있는 분야는 CAE analysis 가 가능한 분야라고도 볼수 있을 텐데, 그렇다면 PINN 적용이 가능한 거의 대부분의 문제가 현재 CAE 로도 solving 가능한 분야로 거의 한정되는 것으로 이해하면 될지도 궁금합니다. 그렇다면 PINN 의 효용성이란 것은 CAE 보다 좀 더 효율적인 (CPU or GPU 자원도 적게 사용하고 예측시간도 CAE solving 시간보다 많이 짧은) 방법이다.. 정도로 이해 되기도 하는데, '효율성' 이외에도 PINN 이 지배방정식을 컴퓨터로 직접 solving 하는 것보다 더 우수할 수 있는 장점이 있다면 어떤것 들이 있을지요..? 왠지 PINN이 지배방정식이 성립하거나 성립하지 않는 분야를 모두 가지고 있는 일반 제조업체에서 딥러닝을 적용하는 경우보다는 차세대 solver 를 연구하는 CAE software 회사에 더 중요한 방법론인것 같은 느낌도 들어서.. 드리는 질문입니다. 꼭 미분방정식이 아니더라도 해당 물리현상의 거시적인 현상을 설명할 수 있는 모종의 수식 혹은 미분방정식은 아니지만 현상적으로 검증된 실험식이 존재한다면 (세부적으로 들어가자면 오차는 존재하지만 거시적인 경향을 따라가는), Loss function 에 PIMM 을 적용해 볼 수 있을지.. 에 대한 질문도 드립니다. 예를 들어 3차원 이미지를 input 받아서 3차원 이미지를 3D convolution layer 로 prediction 하는 경우 (3차원의 pixel level prediction) input 좌표 x,y,z 에 따라서 output 이미지의 좌표 x,y,z 에서의 특성치 u가 모종의 좌표에 따른 함수 관계로 trend 를 따라간다는 것이 이미 증명이 되어 있는 경우라면, u = f(x,y,z) 와 같은 함수를 loss function 에 반영해 놓고, 수집한 데이터에 와 모델이 예측한 값에 대한 MSE 를 더한 loss function 을 minimize 하는 방향으로 학습을 시키는 것도 의미를 가질 수 있는 PINN 활용 방안이 될 수 있는지.. 궁금합니다.
안녕하세요, 수업 설명 감사드립니다. cnn이 아닌 일반적인 fully connected NN (multi-layer perceptron) 에서 혹시 batch/instance/layer normalization 을 어떻게 계산하는지 설명을 부탁드려도 될까요 (그림으로 표현해 주시면 더 좋을거 같습니다.) MLP에서라면 small c가 특정 hidden layer의 node/unit에 대응될거 같고 large C가 layer 전체를 표현할거 같은데, H,W는 무엇인지 이해가 잘 되지 않습니다. 특히, MLP에서 instance normalization의 평균/분산을 구할 수가 있을지 궁금합니다 (단일 값 하나일거 같은데..) 강사님께서는 어떻게 생각하시는지 알려주시면 감사드리며, 제가 잘못 이해한 부분이 있으면 코멘트 부탁드리겠습니다. 추가로 하나만 더 질문드리고 싶습니다. 강의안에서 x_nhwc는 벡터일까요? 아니면 scalar 값일까요? Normalization의 경우에 feature간 (예, 인풋 변수) 평균도 구하는지, element-wise로 구하는지 궁금해서 여쭤봅니다. 바쁘실텐데 시간내주셔서 미리 감사드립니다.
"Only instances of keras.Layer can be " 97 f"added to a Sequential model. Received: {layer} " ValueError: Only instances of keras.Layer can be added to a Sequential model. Received: <tensorflow_hub.keras_layer.KerasLayer object at 0x791605217610> (of type <class 'tensorflow_hub.keras_layer.KerasLayer'>) 위와 같은 오류가 나서 한참 찾았는데요. 원인은 tensorflow_hub와 tensorflow 간의 keras 필요 버전 차이에 있다고 합니다. 아래와 같이 keras를 별도 설치하여 임포트하여 사용하시면 정상 작동됩니다. 같은 에러로 고민이신 분에게 도움이 됐으면 좋겠네요. 수정 소스 코드 !pip install tf_keras import tf_keras as tfk Trained_MobileNet_url = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/classification/2" Trained_MobileNet = tfk.Sequential([ hub.KerasLayer(Trained_MobileNet_url, input_shape=(224, 224, 3)) ]) Trained_MobileNet.input, Trained_MobileNet.output
우선 강사님께서 풀어주신 top-down 코드는 다음과 같습니다. class Solution(object): def uniquePaths(self, m, n): memo = {} def dfs(r, c): if (r, c) == (0, 0): # 출발점에 도달한 경우 return 1 if (r, c) not in memo: # 메모이제이션에 값이 없는 경우 계산 paths = 0 if r - 1 >= 0: # 위쪽 셀에서 오는 경우 paths += dfs(r - 1, c) if c - 1 >= 0: # 왼쪽 셀에서 오는 경우 paths += dfs(r, c - 1) memo[(r, c)] = paths # 결과 저장 return memo[(r, c)] # 결과 반환 return dfs(m - 1, n - 1) 이 코드는 grid에 해당하는 함수만 호출하고, 중복되는 호출은 memo에 저장하기 때문에 총 O(M*N)이 됩니다. 다음은, 디스코드의 다른 사람이 올려주신 코드를 참고해서 조합론을 적용한 코드입니다. class Solution(object): def uniquePaths(self, m, n): memo = {} def fact(x): if x <= 1: return 1 if x not in memo: memo[x] = fact(x - 1) * x # factorial의 결과값을 메모리에 저장 return memo[x] return fact(m + n - 2) / (fact(m - 1) * fact(n - 1)) # fact(m + n - 2) 부분만 호출하고, 분모는 캐싱하므로 시간복잡도는 O(M+N) 분자에 해당하는 부분만 함수를 호출하기 때문에 시간복잡도는 O(M+N)이 됩니다. 우선 제가 궁금한 것은 2가지입니다. 1) 위의 두 코드를 비교했을 때, 수학적으로 접근한 코드가 시간복잡도가 더 낮은데요 항상 dfs, bfs를 먼저 쓰는게 좋은 것은 아닌가요? 2) 강의에서는 조합론을 이용한 방법이 198C99 = 약 2*10^58이여서 완전탐색은 안된다고 하셨는데, 실제로 제출했을 때는 제출이 됬습니다. 왜 이런 차이가 발생한건가요?
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다) - 이외의 문의등은 평생강의이므로 양해를 부탁드립니다 - 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다 - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 서버에 피해가 가지않도록 크롤링할 수 있는 방법은 없을까요?
항상 startIndex가 endIndex보다 작다라는 게 보장되지 않나요? endIndex = r.text.find("};", startIndex + 1) if 0 <= startIndex else 0 여기 구문에서 endIndex는 항상 startIndex보다 큰 값을 가지는 게 보장되는데, 왜 if startIndex < endIndex: 이 조건을 추가해주나요?
안녕하세요 ! 동일한 코드로 선생님의 채점기에 돌렸을 때는 100점이 나왔는데 백준에서는 recursion 에러가 납니다. 종료조건도 잘 설정해준 것 같은데 어디서 그렇게 호출이 많이 일어나는지 이해가 되지않아서요 ㅠㅠ 강의 잘 듣고 있습니다. 감사합니다!! # 1. 재귀 (근데 백준에서는 recursion 에러 뜸..) n = int(input()) meetings = [] for _ in range(n): meetings.append(list(map(int, input().split()))) meetings.sort(key=lambda x: (x[1], x[0])) # 끝나는 시간을 기준으로 정렬 # x[1]이 같을 경우 x[0]을 기준으로 정렬 def find(i, cnt): for j in range(i+1, n): if meetings[i][1] <= meetings[j][0]: # 회의 끝나는 시간보다 시작하는 시간이 더 크거나 같은 것 찾기 cnt += 1 return find(j, cnt) # 또 찾기 return cnt print(find(0, 1))
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
리스트가 너무 이상하게나와요 ㅠ - 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다) - 이외의 문의등은 평생강의이므로 양해를 부탁드립니다 - 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다 - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
llama 3 fine-tuning 을 위해 데이터셋을 구축하고 있습니다. 제가 가지고 있는 데이터는 마크다운 형식의 데이터 셋인데요, 현재 강의에서 사용하는 SFT 형식의 데이터 셋은 ### 를 통해 Instruction 과 Response 를 구분하고 있기 때문에 마크다운 형식의 데이터가 제대로 학습이 되지 않습니다. 제가 가지고 있는 데이터의 예시는 다음과 같습니다. [{"text": "### Instruction: ## 제목입니다. \n ### 소제목 입니다. \n 콘텐츠 입니다. 다음 내용에 이어질 말은 무엇일까요? ### Response: 다음 내용에 이어지는 응답입니다."}, ... ] 이와 같은 데이터를 학습시키고 Response 를 받으면 다음과 같은 응답을 받게 됩니다.: Input: ## 제목 \n ### 소제목 \n 다음 내용은? Ouput: 내용은 다음과 같습니다: \n ### Instruction: ## 다음에 들어갈 제목 \n 컨텐츠 ..~~~ ### Response: ## 소제목 ~~~ 이런식으로 "Instruction" 과 "Response" 도 마크다운 형식의 데이터로 인식하여 거의 모든 답변에 "### Instruction:" 와 "### Response:" 라는 텍스트가 추가되어 나타납니다. 1. 이러한 마크다운 형식의 데이터를 가지고 있는 경우 Instruction 과 Response 를 어떻게 구분 할 수 있을까요? [{"system": " ", "Instruction": " ", "Response": " "}, ... ] 이러한 형식의 데이터로 학습 시킬 순 없을까요? SFT 형태의 데이터가 아닌 다른 형태의 데이터로 학습시키는게 좋을까요?
데이터 전처리 과정에서 이해되지 않는 부분이 있습니다. import pandas as pd import FinanceDataReader as fdr df_krx = fdr.StockListing('KRX') df_krx 로 데이터를 확인했습니다. ㄴ일부 컬럼 (ex.Dept)에 결측치가 있습니다. <- 값이 비어있습니다. Nan 값으로 채워진 것은 아닙니다. ㄴ이 때 info() 메소드와 df_krx.isnull()로 확인해보면 null값이 없는 것으로 나오고 isnull() 또한 모두 false가 나오는데 원인을 모르겠습니다. ㄴ이후 to_csv 메소드를 사용하여 파일을 저장한 후 저장한 파일을 읽어왔을 때는 해당 값들이 NaN 값으로 바뀌어 있는데요. 원인이 무엇일까요?
# warning 어쩌구 뜨면 쓰는건데 굳이 안써도 됨 import urllib3 urllib3.disable_warnings() # text None Type 에러 일 시 header를 추가해준다. # SSLdError 발생 시 verify옵션 추가해준다. header = { 'User-Agent' : 'Mozilla/5.0', 'Referer' : 'https://www.riss.kr/search/Search.do?isDetailSearch=N&searchGubun=true&viewYn=OP&queryText=&strQuery=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&exQuery=&exQueryText=&order=%2FDESC&onHanja=false&strSort=RANK&p_year1=&p_year2=&iStartCount=0&orderBy=&mat_type=&mat_subtype=&fulltext_kind=&t_gubun=&learning_type=&ccl_code=&inside_outside=&fric_yn=&db_type=&image_yn=&gubun=&kdc=&ttsUseYn=&l_sub_code=&fsearchMethod=&sflag=1&isFDetailSearch=N&pageNumber=1&resultKeyword=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&fsearchSort=&fsearchOrder=&limiterList=&limiterListText=&facetList=&facetListText=&fsearchDB=&icate=re_a_kor&colName=re_a_kor&pageScale=100&isTab=Y®nm=&dorg_storage=&language=&language_code=&clickKeyword=&relationKeyword=&query=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5' } for article in articles: title = article.select_one(".title > a").text link = 'https://www.riss.kr' + article.select_one(".title > a").attrs['href'] # 상세 페이지로 요청 response = requests.get(link, headers=header, verify=False) html = response.text soup = BeautifulSoup(html, 'html.parser') # 2. 순서를 기준으로 찾기 if soup.find('span', string='발행기관'): press = soup.find('span', string='발행기관').find_next_sibling().text # find_next_sibling 옆에 있는 명령어를 찾아라 라는 명령문 else: press = [] if soup.find('span', string='발행연도'): year = soup.find('span', string='발행연도').find_next_sibling().text else: year = [] if soup.find('span', string='주제어'): keywords = soup.find('span', string='주제어').find_next_sibling().text.split(';' '') keywords_result = [] for keyword_for in keywords: keywords_result.append(keyword_for.strip()) else: keywords = [] print(title, link, press, year, keywords_result) # result = [] # for keyword in keywords: # result.append(keyword.strip())