안녕하세요. 선생님 강의 잘 듣고 있습니다. 강의를 들으면서 책을 보고 웹 크롤링으로 데이터를 다운 받아 dataframe으로 전환 최종 엑셀로 저장하는 코드를 공부 하고 있습니다. 그런데 크롤링은 되는데 최종 엑셀 저장 파일을 보면 맨 처음 페이지만 저장 되는데요 아래 코드에서 잘못된게 있을까요? 그리고 break문을 적으면 SyntaxError : 'break' outside loop 에러가 나와 주석처리 했습니다. 제가 워낙 초보라 답변을 주실 수 있는지요? 감사합니다. # from selenium import webdriver # browser = webdriver.Chrome("/Users/maru/Downloads/chromedriver") # browser.get("https://seibro.or.kr/websquare/control.jsp?w2xPath=/IPORTAL/user/company/BIP_CNTS01042V.xml&menuNo=286#") search_btn = browser.find_element_by_id("image1") search_btn.click() html = browser.page_source from bs4 import BeautifulSoup from html_table_parser import parser_functions as parser import pandas as pd soup = BeautifulSoup(html, "html.parser") table = soup.find("table", attrs ={"id" : "grid1_body_table"}) p = parser.make2d(table) df = pd.DataFrame(p[2:], columns=p[1]) df.head() import time import random from tqdm import tqdm prev_no = 0 prev_table = None for i in tqdm(range(0,200)): try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() def get_html(browser, cnt): if cnt >= 4: return -1, -1 html = browser.page_source soup = BeautifulSoup(html, "html.parser") cur_no = soup.find("a", sttrs = {"class" : "w2pageList_control_label w2pageList_label_selected"}) cur_no = cur_no.text table = soup.find("table", attrs={"id" : "grid1_body_table"}) if cur_no != prev_no and prev_table != table: return cur_no, table else: time.sleep(1) get_html(browser, cnt+1) cur_no, table = get_html(browser, 1) if cur_no == -1: print("\n종료. 테이블 정보가 바꾸지 않았습니다.") break p = parser.make2d(table) temp = pd.DataFrame(p[2:], columns=p[1]) df = pd.concat([df, temp], 0) prev_no = cur_no prev_table = html if cur_no == "95": print("\n 최종 페이지 도달") # break time.sleep(random.randrange(3, 5)) df.to_excel("stock_div.xlsx")
안녕하세요 강사님. 저번에 친절하게 올려주신 답변을 보고 따라하는 중에 또 질문을 올리네요!! Keras-yolo를 데스크탑 gpu로 train해서 만든 .h5파일을 노트북 cpu로 inference 과정 중 문제가 생겼습니다. 모델 로드는 제대로 되었는데, Yolo의 detect_image()를 사용하여 inference 중 아레와 같은 에러가 발생하였습니다! 혹시 cpu에서 keras-YOLO는 사용이 불가능한 것일까요? -------------- 모델 학습 25회 학습 + validation 2회 진행 중 한번 끊겨서 중간 저장된 model_stage_1.h5로 5회 학습 + 5회 validation 진행한 결과입니다. train_yolo(pretrained_path, annotation_path,classes_path, anchors_path, log_dir,trained_model_name, b_size, epochs_cnt) pretrained_path: C:/JupyterNotebook/ClothClassified/model_data/cloth_stage_1.h5 Create Tiny YOLOv3 model with 6 anchors and 14 classes. Load weights C:/JupyterNotebook/ClothClassified/model_data/cloth_stage_1.h5. Freeze the first 42 layers of total 44 layers. Train on 28938 samples, val on 3215 samples, with batch size 2. Epoch 1/5 14469/14469 [==============================] - 2273s 157ms/step - loss: 17.7330 - val_loss: nan WARNING:tensorflow:From C:\Users\min96\anaconda3\envs\tf115\lib\site-packages\keras\callbacks\tensorboard_v1.py:343: The name tf.Summary is deprecated. Please use tf.compat.v1.Summary instead. Epoch 2/5 14469/14469 [==============================] - 2078s 144ms/step - loss: 17.6376 - val_loss: nan Epoch 3/5 14469/14469 [==============================] - 2094s 145ms/step - loss: 17.5342 - val_loss: nan Epoch 4/5 14469/14469 [==============================] - 2049s 142ms/step - loss: 17.6445 - val_loss: nan Epoch 5/5 14469/14469 [==============================] - 2042s 141ms/step - loss: 17.6296 - val_loss: nan Unfreeze all of the layers. Train on 28938 samples, val on 3215 samples, with batch size 2. Epoch 6/10 14469/14469 [==============================] - 2111s 146ms/step - loss: 14.0190 - val_loss: 5.6780 Epoch 7/10 14469/14469 [==============================] - 2111s 146ms/step - loss: 11.0151 - val_loss: 4.3427 Epoch 8/10 14469/14469 [==============================] - 2114s 146ms/step - loss: 9.7026 - val_loss: 7.6887 Epoch 9/10 14469/14469 [==============================] - 2115s 146ms/step - loss: 9.0433 - val_loss: 2.4560 Epoch 10/10 14469/14469 [==============================] - 2105s 146ms/step - loss: 8.5110 - val_loss: 7.9146 ------------- 모델 로드 cloth_tiny_yolo = YOLO(model_path=pretrained_path, anchors_path=anchors_path, classes_path=classes_path) C:/JupyterNotebook/model_data/cloth_final.h5 model, anchors, and classes loaded. ----------------------- train detected_img = yolo.detect_image(img) plt.imshow(detected_img) (192, 192, 3) --------------------------------------------------------------------------- UnimplementedError Traceback (most recent call last) ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in _do_call (self, fn, *args) 1364 try : -> 1365 return fn ( * args ) 1366 except errors . OpError as e : ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in _run_fn (feed_dict, fetch_list, target_list, options, run_metadata) 1349 return self._call_tf_sessionrun(options, feed_dict, fetch_list, -> 1350 target_list, run_metadata) 1351 ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in _call_tf_sessionrun (self, options, feed_dict, fetch_list, target_list, run_metadata) 1442 fetch_list , target_list , -> 1443 run_metadata) 1444 UnimplementedError : The Conv2D op currently does not support grouped convolutions on the CPU. A grouped convolution was attempted to be run because the input depth of 512 does not match the filter input depth of 1 [[{{node conv2d_49/convolution}}]] During handling of the above exception, another exception occurred: UnimplementedError Traceback (most recent call last) <ipython-input-23-b6fbc29987b5> in <module> 1 # with tf.device('/cpu:0'): ----> 2 detected_img = yolo . detect_image ( img ) 3 plt . imshow ( detected_img ) C:\JupyterNotebook\model_data\keras-yolo3\yolo.py in detect_image (self, image) 122 self . yolo_model . input : image_data , 123 self . input_image_shape : [ image . size [ 1 ] , image . size [ 0 ] ] , --> 124 K . learning_phase ( ) : 0 125 }) 126 ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in run (self, fetches, feed_dict, options, run_metadata) 954 try : 955 result = self._run(None, fetches, feed_dict, options_ptr, --> 956 run_metadata_ptr) 957 if run_metadata : 958 proto_data = tf_session . TF_GetBuffer ( run_metadata_ptr ) ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in _run (self, handle, fetches, feed_dict, options, run_metadata) 1178 if final_fetches or final_targets or ( handle and feed_dict_tensor ) : 1179 results = self._do_run(handle, final_targets, final_fetches, -> 1180 feed_dict_tensor, options, run_metadata) 1181 else : 1182 results = [ ] ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in _do_run (self, handle, target_list, fetch_list, feed_dict, options, run_metadata) 1357 if handle is None : 1358 return self._do_call(_run_fn, feeds, fetches, targets, options, -> 1359 run_metadata) 1360 else : 1361 return self . _do_call ( _prun_fn , handle , feeds , fetches ) ~\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\client\session.py in _do_call (self, fn, *args) 1382 '\nsession_config.graph_options.rewrite_options.' 1383 'disable_meta_optimizer = True') -> 1384 raise type ( e ) ( node_def , op , message ) 1385 1386 def _extend_graph ( self ) : UnimplementedError : The Conv2D op currently does not support grouped convolutions on the CPU. A grouped convolution was attempted to be run because the input depth of 512 does not match the filter input depth of 1 [[node conv2d_49/convolution (defined at C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]] Original stack trace for 'conv2d_49/convolution': File "C:\Users\min96\anaconda3\envs\t115c\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "C:\Users\min96\anaconda3\envs\t115c\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel_launcher.py", line 16, in <module> app.launch_new_instance() File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\traitlets\config\application.py", line 664, in launch_instance app.start() File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel\kernelapp.py", line 612, in start self.io_loop.start() File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\platform\asyncio.py", line 199, in start self.asyncio_loop.run_forever() File "C:\Users\min96\anaconda3\envs\t115c\lib\asyncio\base_events.py", line 442, in run_forever self._run_once() File "C:\Users\min96\anaconda3\envs\t115c\lib\asyncio\base_events.py", line 1462, in _run_once handle._run() File "C:\Users\min96\anaconda3\envs\t115c\lib\asyncio\events.py", line 145, in _run self._callback(*self._args) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\ioloop.py", line 688, in <lambda> lambda f: self._run_callback(functools.partial(callback, future)) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\ioloop.py", line 741, in _run_callback ret = callback() File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 814, in inner self.ctx_run(self.run) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run return f(*args, **kw) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 775, in run yielded = self.gen.send(value) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel\kernelbase.py", line 365, in process_one yield gen.maybe_future(dispatch(*args)) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 234, in wrapper yielded = ctx_run(next, result) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run return f(*args, **kw) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel\kernelbase.py", line 268, in dispatch_shell yield gen.maybe_future(handler(stream, idents, msg)) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 234, in wrapper yielded = ctx_run(next, result) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run return f(*args, **kw) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel\kernelbase.py", line 545, in execute_request user_expressions, allow_stdin, File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 234, in wrapper yielded = ctx_run(next, result) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run return f(*args, **kw) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel\ipkernel.py", line 306, in do_execute res = shell.run_cell(code, store_history=store_history, silent=silent) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\ipykernel\zmqshell.py", line 536, in run_cell return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\IPython\core\interactiveshell.py", line 2867, in run_cell raw_cell, store_history, silent, shell_futures) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-packages\IPython\core\interactiveshell.py", line 2895, in _run_cell return runner(coro) File "C:\Users\min96\anaconda3\envs\t115c\lib\site-pa
고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
파이썬 공식 문서 --버전 3.8부터 폐지: aws 에 있는 어웨이터블이 코루틴이면, 자동으로 태스크로 예약됩니다. 코루틴 객체를 wait() 로 직접 전달하는 것은 혼란스러운 동작 으로 연결되므로 폐지되었습니다. -- async def process_async(): start = time.time() task1 = asyncio.create_task( exe_calculate_async('One', 3)) task2 = asyncio.create_task( exe_calculate_async('Two', 2)) task3 = asyncio.create_task( exe_calculate_async('Three', 1)) await task1 await task2 await task3 end = time.time() print(f'>>> Total seconds: {end - start}') 문제 없이 실행 되었습니다.
안녕하세요 강사님. 제가 윈도우 유저라서, 강사님께서 알려주신대로 Malgun Gothic 을 사용해서 원하는 결과값을 얻었습니다. 여기서 추가되는 질문이, 해당 폰트 말고 다른 폰트로 입력하려 하는데 이 입력값은 어떻게 알 수 있을까요? 예컨대 맑은 고딕이 한글로 "맑은 고딕"이 아닌, "Malgun Gothic" 이라는 것을 어떻게 알 수 있는 것일까요? C:/Windows/Fonts 에서 폰트 파일들을 확인해도 파일명은 한글로 나와있어서, 구체적으로 어떻게 입력하면 좋을지 알고 싶습니다!
안녕하세요 강사님. nbextensions 설치 후 화면을 보았는데, 강의 화면과는 달리 선택할 수 있는 항목이 별로 없더라고요. 1강에서 강사님께서 보여주신 목차 기능 또한 보이지 않는 상황입니다. 다른 분이 질문한 글을 보면서 체크 표시 해제도 해보고, refresh도 해보았는데 그 상황 그대로입니다. pip과 conda를 이용해서 둘 다 재설치를 해봤는데도 마찬기지인 상황입니다. 혹시 해결책을 알 수 있을까요..?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 예제에서 리스트컴프리헨션을 temp2에 할당할 때, generator_ex2( )가 실행되면서 인자는 리스트에 담기고, start, continue, end가 출력돼서 저렇게 뜨는건가요? 뭔가 머릿 속으로는 아는 것 같은데, 막상 글로 표현하려니 모르는 것 같네요;;
ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다: 'C:\\Users\\leehb\\AppData\\Local\\Temp\\pip-uninstall-87624jrp\\pip.exe' Consider using the `--user` option or check the permissions. 이렇게 나왔다가 pip install datetime WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617> distutils: c:\python38-64\Include\UNKNOWN sysconfig: c:\python38-64\Include WARNING: Additional context: user = False 이렇게 뜹니다. 이거 어떻게 해결해야할까요?
ValueError: unknown format code 'd' for object of type 'str' 이라고 뜨네요 krx/listing.py 에서 df_listing['Symbol'] = df_listing['Symbol'].apply(lambda x: '{:06d}'.format(x)) 이부분에서 x값이 string으로 들어가서 문제가 생기는듯 합니다. 버전은 선생님 버전이랑 같은데 뭐가 문제인지 몰겠네요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 선생님 3.3 네이버금융 개별종목 수집 강의 중 파일 자동 저장 코드 에서 저장할 디록토리를 지정하는 방법 있을까요? 수동으로 저장할때 보통 df.to_csv("../data/test.csv") 이런식으로 저장디렉토리에 저장 하는데 변수로된 파일명을 ""안에 입력하니 에러가 나서 다른 방법이 있는지요? 항상 강의 잘 듣고 있습니다. 감사합니다.
customer = "Robert" index = 1 while True: print("{0}, Your order is ready.".format(customer)) index += 1 if index => 2 print("{0}, Your order is ready. We called you {1} times".format(customer, index)) index += 1 나도코딩님 무료파이썬 강의 while편에서의 질문입니다. 강의에서는 한글이니까 아래의 코드는 안넣어도 상관없지만 영어로 하면 처음 불렀는데 times라고 하면 문법이 안맞다는걸 깨닫고 처음 불렀을때와 그다음 불렀을때의 문장을 구분해서 출력하고 싶어서 넣은 코드입니다. if index => 2 이부분에서 invalid syntax (<unknown>, line 8)이라고 에러메시가 출력이 됩니다. 원인은 도저히 모르겠습니다. 알려주시면 정말 감사하겠습니다.
[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
안녕하세요 선생님! 9분쯤에 컬럼순서 바꾸려고 리스트해서 하는건 이해하고, value값도 변하지 않는거 까지는 알겠습니다! 근데 iso2를 삭제하고 1번자리에 다시 넣었는데 value값도 그대로 온거면 value값은 iso2라는 컬럼에저장되어있기에 자동으로 오는건가요? 그래서 cols.insest(1, 'iso2') 해야 iso2값이 그래도 오지 여기서 컬럼명을 바꾸고싶다고 다른걸 넣으면 value값은 안따라오는건가요?
안녕하십니까, 현재 RetinaNet을 구현해보고자 Retitanet paper를 읽고 케라스 공식홈페이지의 Retinanet 예시 코드(https://keras.io/examples/vision/retinanet/#implementing-smooth-l1-loss-and-focal-loss-as-keras-custom-losses) 를 이해하고자 하는데 제가 전반적인 흐름을 이해하질 못하고 있습니다. 본 강의에 있는 Fast RCNN 파트에서, 예측 박스가 Ground Truth 좌표값을 따라가는 것이 아닌 Anchor Box 중에서 Ground Truth와 IOU 높은 Positive Anchor Box를 따라간다고 하였습니다. 그렇다면 1. RetinaNet이 작동하기 전 과정이, 우서적으로 Anchor box들 생성하고 그 중에서 Ground Truth와의 IoU>= 0.5인 Positive Anchor Box 찾기 가 맞는지요. 2. 그리고 RetinaNet 구조를 보면 FPN 에서 나온 P3 ~ P7(Retinanet paper 기준) feature map을 class subnet과 box subnet으로 각각 들어가게 되고, 위 케라스 공식 홈페이지 예제 코드 이때, box subnet의 결과값이 W x H x (4 x 9) 꼴인데, Positive Anchor Box의 좌표는 (x, y, w, h)로 4개인데 어떻게 regression 계산이 되는지 궁금합니다. class subnet에 들어가게 되면 W x H x (num_classes x 9) 꼴의 결과값이 나오는데, 이는 2번질문과 마찬가지로 class labeling은 0,1,2,...과같은 정수형이거나 벡터형으로 나타날텐데 어떻게 regression 계산이 되는지 궁금합니다. 3. 또한, Positive Anchor Box를 제외한 나머지 Anchor Box들은 결국에는 직접적인 학습에 사용되지 않는 것인지요? 만약 사용된다면 Negative Anchor Box(IoU < 0.4)와 Ignorance Anchor Box(0.4 <= IoU < 0.5)가 어떤식으로 사용되는 지에 대해 설명 부탁드립니다. 4. 또한, 한 이미지에 서로 다른 객체가 2개 이상일 때, feature map이 class subnet에 들어가서 도출된 결과값( (num_classes) X 9)이 어떤 방식으로 해당 객체의 레이블과 대응하여 학습되는지 궁금합니다. 예를 들어, 사과(0), 고양이(1), 강아지(3) 클래스가 3개인 데이터셋에서, 사과(0)와 고양이(1)가 존재하는 특정 이미지를 RetinaNet에 training시키게 되면, P3 ~ P7의 feature map이 class subnet으로 들어가서 W x H x (3 x 9)꼴의 결괏값이 나올텐데, 이때 해당 결괏값이 사과(0)인지, 고양이(1)인지 어떤 값이 대응하여 학습해야할 지에 대해서 알 수가 없어 이렇게 질문드립니다. 대략적인 이론을 알고 있다고 생각하여 직접 코딩을 하려했지만, 막막하여 keras 예제를 통해 역으로 이론을 이해하려 시도했습니다. 하지만 코드 자체가 이해가 되질 않고, 어떤 식으로 데이터가 흘러가지는에 대해서도 파악할 수가 없었습니다.. 혼자서 해결해보려 했으나 며칠동안 해결되지 않고 오히려 이해가 되지 않는 부분이 많아져서 이렇게나마 질문을 드립니다...