안녕하세요 강사님.. 제가 일주일이 넘는 기간 동안 계속 이것저것 시도를 해봤음에도 왜 분류 성능이 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파일의 내용을 웹사이트에 시각화하는 것이 가능한가요?
"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 문의하기를 이용해주세요.
데이터 전처리 과정에서 이해되지 않는 부분이 있습니다. 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())
JSON 데이터와 파이썬의 사전형 타입에 대해서 알고있는것도 좋을거 같아요! 밑에는 Chat GPT쪽에서 물어본 결과입니다. 참고하세요 🙂 파이썬 사전형 데이터 (Dictionary) • 내부 구성: 키-값 쌍으로 이루어져 있어. 예를 들어 { "name": "Alice", "age": 25 } 같은 식이야. • 사용 방법: 파이썬 내부에서 데이터를 쉽게 다루기 위해 만들어졌어. • 기능: 추가, 삭제, 수정 등의 다양한 기능을 가지고 있어. 예를 들어, my_dict["name"]으로 “Alice”를 불러올 수 있어. JSON 데이터 (JavaScript Object Notation) • 내부 구성: 역시 키-값 쌍으로 이루어져 있지만, 텍스트 기반 포맷이야. 예를 들어, "{"name": "Alice", "age": 25}"처럼 문자열로 표현돼. • 사용 방법: 주로 데이터를 주고받을 때 사용해. 웹 서버와 클라이언트 사이에서 데이터를 주고받을 때 많이 쓰여. • 기능: 데이터를 직렬화(serialize)하고 역직렬화(deserialize)하는데 초점이 맞춰져 있어. 예를 들어, 파이썬에서 JSON 문자열을 파이썬 사전형으로 변환하려면 json.loads()를 사용해. 차이점 요약 1. 포맷과 사용 목적: 파이썬 사전형은 파이썬 프로그램 내에서 사용하는 데이터 구조고, JSON은 주로 데이터 교환을 위한 텍스트 포맷이야. 2. 표현 방식: 사전형은 파이썬 문법을 따르고, JSON은 텍스트 기반이라 언어에 관계없이 사용할 수 있어. 3. 기능과 제약: 사전형은 다양한 조작이 가능하지만, JSON은 데이터를 주고받는 용도로 제한적인 기능을 갖고 있어. 요약: -> 똑같이 생겼지만 사전형 데이터 타입은 파이썬의 세계관안에서 바로 사용이 가능하며, 파이썬 세계관안에서 자유롭게 구사 가능하다. -> JSON 데이터 타입은 직렬화와 역직렬화에 초점이 맞춰져있으며 주고 받기 위한 데이터 타입이다. 다른 언어 세계관에 들어가면 디코딩 (역직렬화)가 필요하고 다른 언어 세계관으로 보낼때는 인코딩 (직렬화)가 필요하다.