반응형

분류 전체보기 502

파이토치 RuntimeError: grad can be implicitly created only for scalar outputs 해결법

Pytorch loss.backward() 과정 에러 디버깅 파이토치에서 모델 학습 과정 내 backporpagation을 시도하는 도중, RuntimeError: grad can be implicitly created only for scalar outputs 라는 오류 메시지가 출력되었습니다. loss.backward() # 여기서 오류 발생 오류 원인 loss.backward() 과정은 기본적으로 1개의 스칼라 데이터에 대한 역전파를 수행합니다. 그러나, loss 변수 내에는 배치 내 데이터 각각에 대한 손실 함수 점수들이 벡터 형태로 저장된 점을 확인했습니다.(아래는 3개의 데이터에 대한 loss 점수 예시입니다.) print(loss) # tensor([1.5054, 1.3475, 1.0413]..

Python/Debugging 2022.04.23

[Pytorch] 파이토치 특정 layer freeze 방법

파이토치 일부 layer의 파라미터만 freeze하기 파이토치에서 학습을 진행할 때, 특정 layer를 freeze하는 방법을 말씀드려보겠습니다. 이해를 돕기 위해 아래와 같은 매우 간단한 신경망이 있다고 가정해보겠습니다. import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(8, 4) self.fc2 = nn.Linear(4, 2) self.fc3 = nn.Linear(2, 1) def forward(self, x): return self.fc3(self.fc2(self.fc1(x))) my_net = Net() 예를 들어, 위의 신경망에서 fc2에 해당하..

Python/Pytorch 2022.04.22

[Pandas] 파이썬 피벗테이블 필터링, 정렬 및 데이터프레임 변환

판다스 pivot table 값 추출, 정렬, to dataframe 이번 글에서는 지난 시간에 다루었던 피벗테이블 생성법에 이어서 생성된 테이블 내에서 필터링, 정렬 및 데이터프레임 변환을 진행하는 방법에 대해서 다루어보도록 하겠습니다. pd.pivot_table 함수로 테이블을 생성하는 상세한 방법은 아래 링크의 이전 글을 참고하세요. [Pandas] 파이썬 피벗테이블 생성 : pd.pivot_table 함수 사용법 정리 파이썬 판다스 피벗테이블 조회 예제 파이썬 pandas 모듈의 pd.pivot_table 함수로 피벗테이블을 원하는대로 생성하는 방법을 values, index, columns, fill_value 및 aggfunc 인자의 기능을 위주로 정리해보겠습. jimmy-ai.tistory...

Python/Pandas 2022.04.21

[Pandas] 파이썬 피벗테이블 생성 : pd.pivot_table 함수 사용법 정리

파이썬 판다스 pivot_table 함수 사용 예제 파이썬 pandas 모듈의 pd.pivot_table 함수로 피벗테이블을 원하는대로 생성하는 방법을 values, index, columns, fill_value 및 aggfunc 인자의 기능을 위주로 정리해보겠습니다. 이 글은 판다스의 pd.pivot_table 함수 공식 설명 글의 내용에 기반하여 작성되었습니다. 먼저, 이해를 돕기 위하여 아래와 같이 학생들의 정보와 점수가 적혀있는 데이터프레임 df가 있다고 가정해보도록 하겠습니다. import pandas as pd import numpy as np a = {'반' : [1, 1, 1, 1, 2, 2, 2, 2], '성별' : ['남', '남', '여', '여', '남', '남', '여', '여'..

Python/Pandas 2022.04.21

C++ 스타일의 for문(범위 기반 for문) : 배열, 문자열, 벡터 순회 예제

C++ 범위 기반 for문 사용법 이번 글에서는 C++에서 제공하는 스타일의 for문인 범위 기반 for문의 사용 방법을 array, string 및 vector에서의 사용 예제를 통해서 살펴보겠습니다. 배열 순회 예시, 값 변경 시 주의 사항 배열 내 값들을 순회할 때, C언어 스타일의 순회 방법도 C++에서 여전히 사용 가능하지만 아래의 예시 코드와 같이 for(자료형 순회 변수 : 배열) 형태로도 사용하실 수 있습니다. 이와 같은 형태로 for문을 사용하는 방식을 범위 기반 for문이라고 합니다. #include using namespace std; int main() { int arr1[] = {0, 1, 2, 3}; // C언어 스타일의 for문 for(int i = 0; i < 4; i++){..

C & C++ 2022.04.20

[Numpy] 넘파이 자료형 종류 지정, 확인 및 변경 방법(dtype, astype)

파이썬 넘파이 배열 data type 선택, 출력 및 변환 Numpy 모듈에서 배열의 자료형을 고르고 확인할 수 있는 dtype과 데이터 타입의 종류를 바꿀 수 있는 astype에 대해서 간략하게 살펴보겠습니다. 참고로, 넘파이에서 지원하는 상세한 자료형 종류에 대한 정보가 필요하시다면 아래 링크의 공식 문서에서 확인하실 수 있습니다. Data types — NumPy v1.22 Manual Array Scalars NumPy generally returns elements of arrays as array scalars (a scalar with an associated dtype). Array scalars differ from Python scalars, but for the most part th..

Python/Numpy 2022.04.20

파이썬 리스트 내 중복 원소만 추출/중복 제거 방법 정리

list 자료형 내 중복 원소 찾기, 제거하기 파이썬의 리스트 자료형에서 2번 이상 등장한 원소들만 추출하는 방법과 중복을 제거하여 고유한 값들만 남기는 방법에 대해서 살펴보겠습니다. 리스트 내 2회 이상 등장 원소만 추출 for문을 통해 각 원소를 순회하며 처음 등장한 값인지 여부를 판별하여 이미 이전에 등장했던 원소들만 솎아내어 중복 원소만 추출이 쉽게 가능합니다. a = [1, 2, 3, 1, 2, 4, 5, 1] x = [] # 처음 등장한 값인지 판별하는 리스트 new_a = [] # 중복된 원소만 넣는 리스트 for i in a: if i not in x: # 처음 등장한 원소 x.append(i) else: if i not in new_a: # 이미 중복 원소로 판정된 경우는 제외 new_a..

파이썬 함수 안에 함수(중첩함수) 선언 예제, 변수 범위 원리

파이썬 중첩함수 사용법 및 원리 파이썬에서 함수 내부에 또 다른 함수를 선언하는 중첩함수라는 개념에 대하여 작동 원리 및 변수의 범위를 간단한 예제를 통해 이해해보도록 하겠습니다. 함수 안의 함수 사용 예시 def 내에 def 구문을 사용하는 식으로 중첩함수를 쉽게 선언할 수 있습니다. (lambda 형태를 사용하여 함수 내부 함수를 선언하는 것도 가능합니다.) 숫자 n을 input으로 넣으면 n을 더하는 내부 함수를 반환하는 함수의 예시는 아래와 같습니다. def make_func(n): def add_n(x): return x + n return add_n 참고로, def 내에 lambda를 사용한 케이스, lambda 내 lambda를 활용한 경우의 아래 선언 코드들도 모두 위의 코드와 같은 결과가..

[C언어] 2차원 배열 선언, 값 접근/수정/출력 방법 및 문자열 배열

C언어 2차원 array 사용 방법 예제 이번 글에서는 C언어에서 2차원 배열을 선언하는 방법과 주요 특징을 먼저 살펴본 뒤, 값에 접근, 수정 및 출력하는 과정을 다루어보고 2차원 배열의 특수 케이스인 문자열(string) 배열에 대해서까지 말씀드려보도록 하겠습니다. 2차원 배열 선언, 특징 C언어에서 2차원 이상의 다차원 배열 선언 방법은 자료형 변수명 [1차 배열 크기][2차 배열 크기]... = {값} 형식으로 코드를 작성해주시면 됩니다. 아래는 2 * 3 크기의 int 2차원 배열과 3 * 4 크기의 double 2차원 배열을 선언한 예시입니다. #include int main(){ /* [[1, 2, 3], [4, 5, 6]] 꼴의 2차원 정수 배열 */ int arr1 [2][3] = { {..

C & C++ 2022.04.17

우분투 일반 계정 비밀번호 잊어버린 경우 해결법

리눅스 사용자 계정 비밀번호 분실 시 변경(초기화) 방법 우분투 기반 Linux 환경에서 사용자 계정 비밀번호를 까먹은 경우에 해당 계정의 비밀번호를 초기화하는 방법에 대해서 설명해보도록 하겠습니다. 단, 이 포스팅은 root 계정의 비밀번호는 알고 있는 상황을 가정하고 로그인 창에서 일반 계정의 비밀번호를 변경하는 방법을 위주로 설명한 글이니 유의바랍니다. root 계정에 접근은 가능한 상황이나, root의 비밀번호만 분실한 경우는 아래 글을 참고하세요. ubunto 18 root 계정 비밀번호 재설정(초기화)-YEOL -리눅스 를 사용할 때 중요한 설정을 변경 및 저장해야 할 경우 root 계정의 사용이 필수적입니다. 중요한 설정에는 보안적 요소가 필요하기 때문입니다. 그 때문에 root 계정의 비밀..

Linux 2022.04.16
반응형