안녕하세요 강사님.. 제가 일주일이 넘는 기간 동안 계속 이것저것 시도를 해봤음에도 왜 분류 성능이 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파일의 내용을 웹사이트에 시각화하는 것이 가능한가요?
샐러리움 모바일 상태에서 네이버 로그인하려는데 [1번: 네이버 메인화면에서 바로 로그인 사이트 주소로 타이핑 하여 들어가는 방법]과 [2번 : 네이버 모바일에서 하나하나 클릭하는 코드를 만들어서 로그인 화면으로 들어가는 방법] 2가지 방식을 알게 되었습니다. 그런데 1번 방법으로 접근할 경우 iP보안 란이 뜹니다. 내용을 읽어보면 이걸 무시하고 진행하기 보다는 해제한 상태에서 진행하는 것이 사전에 문제를 차단할 수 있는 방법으로 보입니다. 반면 2번에는 일너 ip보안 창이 나오지 않는 것을 알 수 있습니다. (생략 되는 건지 어떤건지는 모르겠습니다 ) 그렇다면 1번의 방식으로 접근하는 것이 크롤링을 덜 차단당 할 수 있는 안전한 방법인가요? 1. https://nid.naver.com/nidlogin.login?mode=form&url=https://m.naver.com https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fm.naver.com%2Fna%2F
"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())
수강완료 후 다시보고 있는데 userAgent 정보에 있는 모바일 디바이스 정보와 디바이스에 맞는 동일 해상도로 크롤리 작업을 할 필요는 없을까 하는 의문이 듭니다. 예를 들어 a52s라는 모바일 디바이스로 크롤링을 한다면 해상도 2400 x 1080으로 화면을 띄우고 작업해여 하지 않나 라는거죠 포털 사이트에서 모바일 디바이스와 동일하지 않는 해상도로 작업하는 계정을 벤하지 않을까 걱정이 됩니다. ㅜㅜ