전체 글 149

[Pytorch Lightning] BART를 훈련해 Text를 요약해보자 - 2

1편 : 프로젝트 요약 및 LightningModule 설계2편 : Dataset 구축 및 DataLoader 구축3편 : logger 작성, wandb 연동 및 확인4편 : 모델 로딩 및 실행결과(wandb) 확인 이번에는 Dataset 구축 및 DataLoader 구축에 대해 설명하려고 한다. 근데 생각을 해보았을 땐, 이 글을 보는 사람들은 데이터셋 구축은 관심이 없을 것이고 아무래도 어떻게 코드를 짜는지 궁금할 것이라 생각하기 때문에 데이터셋 구축에 대해서는 설명하지 않고 데이터셋이 어떻게 구성되어 있는지만 말하려고 한다.   Dataset 구축# Text : Encoder # function : Decoder# 예시# 음료 개수, 메뉴 개수, 메뉴 개수 -> drink(quantity=1); m..

[Pytorch Lightning] BART를 훈련해 Text를 요약해보자 - 1

1편 : 프로젝트 요약 및 LightningModule 설계2편 : Dataset 구축 및 DataLoader 구축3편 : logger 작성, wandb 연동 및 확인4편 : 모델 로딩 및 실행결과(wandb) 확인  오늘은 이전에 캡스톤디자인에서 BART를 이용해서 Text를 요약하는 Task를 진행했었는데, 이것에 대해 설명하면서 코드를 어떻게 작성했는지 설명하려고 한다. 간단하게 요약하면 다음과 같다. 카페 메뉴에 대한 Text가 입력이 되면, BART를 이용해서 영어로 번역한 뒤 필요한 내용만 출력하는 것이다. 아이스 아메리카노 하나, 카페라떼 하나를 영어로 요약하는 것이다. 다음과 같은 Task를 위해 BART를 훈련시키는 코드에 대해 설명하겠다. 필요한 라이브러리 설치pip install da..

[Python] UnicodeEncodeError: 'utf-8' codec can't encode characters in position : surrogates not allowed 해결방법

오늘은 Python에서 이모지와 관련하여 인코딩을 하는 과정에서 오류가 발생해서 해결하는 방법에 대해 소개하겠다.오류>>> text = "😊">>> print(text)UnicodeEncodeError: 'utf-8' codec can't encode characters in position 17-18: surrogates not allowed 이 오류는 주로 Python에서 이모지 또는 특정 유니코드 문자를 처리할 때 발생한다. 이 오류의 원인은 다음과 같다.서로게이트 쌍 문제: UTF-16에서 사용되는 서로게이트 쌍이 UTF-8로 인코딩 되려 할 때 문제가 발생한다. Python 내부에서 UTF-16 서로게이트 쌍을 UTF-8로 직접 변환하려고 하면, UTF-8이 해당 문자를 표현할 방법이 없기 때..

Coding/Python 2024.07.08

[SQL] SQL 명령어(Keyword) 모음

SQL 명령어에 대해 소개해보려고 한다. 자주 사용하는 명령어 위주로 설명하고 이후에는 코테문제에서 사용했던 명령어들을 설명하려고 한다. 데이터다음은 user 테이블의 데이터이다.idnameageemail1John28John@example.com2Jane32Jane@example.com 3Bob24Bob@example.com 4Alice29Alice@example.com 5Tom31Tom@example.com 6Lucy22Lucy@example.com 7Mark35Mark@example.com 8Ana25Ana@example.com 9Yun28Yun@example.com  명령어명령어와 명령어에 대한 간단한 설명이다.키워드설명SELECT하나 이상의 컬럼의 데이터를 조회FROM데이터 조회의 대상이 되는 테..

Coding/SQL 2024.06.25

[Django] 장고의 마이그레이션(Migration)

마이그레이션(Migration)은 무엇인가?Django의 마이그레이션은 모델의 변경 사항을 DB 스키마로 전파하는 프로세스다. 사용자(User)가 모델을 변경(필드 추가 및 삭제)를 하면, 이를 데이터베이스 스키마에 적용하는 것을 목적으로 설계했다. 마이그레이션을 생성하면 그 시점의 파이그레이션 구조를 나타낸다. git과 같이 그 시점의 commit 상태라고 보면된다.다시 말하면, 마이그레이션은 그 시점의 모델간의 모든 종속성(dependency)를 담고 있다고 보면 된다. setting.py 적용하기마이그레이션 관련 명령어를 적용하기 이전에 해야할 일이 있다. 그것은 settting.py에 app_name을 적용하는 것이다.config/setting.py에 들어가서 INSTALLED_APPS에  app..

Django 2024.06.19

[VSCode] csv파일 한글깨짐 해결방법

VSCode에서 CSV파일을 열 때, 한글이 깨졌을 때 해결하는 방법에 대해 알아보려고 한다.csv파일을 열게 되면 다음과 같이 화면이 깨져 나온다. 오류가 나는 이유는 인코딩에서 문제가 생긴다. 그래서 인코딩 방법을 수정해야한다. 수정하는 방법에 대해 소개하겠다. 한국어로 인코딩해서 출력우하단에 UTF-8을 클릭 인코딩하여 다시 열기 클릭 Korean 선택 한국어로 출력 한국어로 인코딩해서 저장EUC-KR 클릭  인코딩하여 저장(Save with Encoding) 클릭 UTF-8 클릭  이 과정을 거치면 다음에 파일을 열 때 자동적으로 한글로 잘 출력되는 것을 확인할 수 있다.

Program/VSCode 2024.06.14

[Python] 파이썬에서 getter, setter 사용 방법(feat. Property)

파이썬에서 객체에 값을 저장하거나 가져올 때, getter와 setter를 사용하는데 이것들을 하나하나 선언하는 것 (get_name 또는 set_name)보다 파이썬에서 지원하는 것이 있다. 그것은 바로 Property(프로퍼티)이다. PropertyProperty는 클래스의 어떤 속성에 대한 접근을 제어하는 경우 사용한다. Property는 클래스 속성에 대해 접근을 하는 내장 함수이다. 이를 통해 클래스 속성의 값을 설정하거나 값을 가져올 때 추가적인 기능을 실행할 수 있도록 합니다. 이를 통해서 더욱 파이썬스러운 코드를 작성할 수 있습니다. getter, setter, deleter 사용방법기본적으로 Class 다음과 같이 선언되어있다고 해봅시다.class Person: def __init_..

Coding/Python 2024.06.13

[Python] 타입 힌트를 위한 typing 모듈에 대해 알아보자

Python에서 타입 힌트 등장 배경 Python은 동적 타입 언어로 알려져 있다. 이는 프로그래머가 변수의 타입을 미리 선언하지 않아도 되며, 프로그램 실행 시점에서 타입이 결정된다. 이러한 동적 타이핑은 개발의 유연성을 높이지만, 대규모 프로젝트나 복잡한 시스템에서는 종종 문제를 야기한다. 타입 오류가 런타임에서만 발견되기 때문에, 버그를 예방하고, 코드의 안정성을 향상시키기 어렵다. 이러한 문제점을 해결하기 위해 Python 3.5 버전에서 typing 모듈이 도입되었습니다. 타입 힌트(typing Module) Python의 typing 모듈은 개발자들이 변수, 함수 매개변수, 반환값 등의 데이터 타입을 명시적으로 선언할 수 있게 해주는 기능을 제공한다. 주로 코드의 가독성을 향상시키고, 정적 분..

Coding/Python 2024.06.12

[PEP] 함수 Docstring과 Type Hint 작성 방법

파이썬에서 유명한 라이브러리 코드를 보게 되면 무언가 많이 작성되어 있는 것을 볼 수가 있다. def generate_identified_filename(filename: Path, identifier: str) -> Path: """ Append a string-identifier at the end (before the extension, if any) to the provided filepath Args: filename: pathlib.Path The actual path object we would like to add an identifier suffix identifier: The suffix to add Returns: String with c..

Coding/Clean Code 2024.06.11

[PEP] Pythonic한 Name Convention에 대해 알아보자

파이썬에서 사용하는 PEP(Program Enhance Proposal) 에서 Name Convention에 대해 알아보려고 한다. PEP는 파이썬 개발자들 간의 관습을 적어놓은 것이라고 생깍하면 된다. 파이썬 유저라면 파이썬 코드를 작성할 때 PEP-8을 이용해서 쓰는 것을 추천한다.목차피해야 할 이름Package and Module Names (패키지 모듈 이름)Class Name (클래스 이름)Type Variable Names (타입 변수 이름)Exception Names (예외 이름)Global Variable Names (전역 변수 이름)Function and Variable Names (함수, 변수 이름)Method Names and Instance Variables (메소드와 인스턴스 변수..

Coding/Clean Code 2024.06.10