hyunonblue의 등록된 링크

 hyunonblue로 등록된 네이버 블로그 포스트 수는 50건입니다.

파이토치 3.5 클래스로 파이토치 모델 구현하기 [내부링크]

앞서 구현한 회귀 모델은 model = nn.Linear(1,1) 이었다 이를 클래스로 구현하면 이렇게 선언할 수 있는데 반드시 숙지할 필요가 있다고 한다 클래스 형태의 모델은 nn.Module을 상속받는다. __init__()에서 모델의 구조와 동작을 정의하는 생성자를 정의한다. 이는 파이썬에서 객체가 갖는 속성값을 초기화하는 역할로, 객체가 생성될 때 자동으로 호출된다. super() 함수를 부르면 여기서 만든 클래스는 nn.Module클래스의 속성을 가지고 초기화 된다. forward() 함수는 모델이 학습데이터를 입력받아서 forward연산을 진행시키는 함수이다. 이 forward()함수는 model 객체를 데이터와 함께 호출하면 자동으로 실행된다. 예를들어 model이란 이름의 객체를 생성한 후, model(입력 데이터)와 같은 형식으로 객체를 호출하면 자동으로 forward 연산이 수행된다. (h(x) 식에 입력 x로부터 예측된 y를 얻는 것을 forward 연산이라고 한

파이토치 3-6.미니 배치와 데이터 로드(Mini Batch and Data Load) [내부링크]

x_train = torch.FloatTensor([[73, 80, 75], [93, 88, 93], [89, 91, 90], [96, 98, 100], [73, 66, 70]]) y_train = torch.FloatTensor([[152], [185], [180], [196], [142]]) 앞서 배운 데이터를 떠올려보자 이런 데이터는 현업에 비해 굉장히 적은 양이고 데이터가 수십만개 이상이라면 경사 하강법을 하는 것을 매우 느리고 많은 계산이 필요해 계산이 불가능할 수도 있다. 그렇기 때문에 전체 데이터를 더 작은 단위로 나눠서 해당 단위로 학습하는 개념이 나오게 되었는데 이것을 미니 배치(Mini batch) 라고 부른다. 위 그림은 전체 데이터를 미니 배치 단위로 나누는 것을 보여준다. 미니 배치 학습을 하게되면 미니 배치만큼 가져가서 미니배치에 대한 비용을 계산하고 경사 하강법을 수행한다. 또 그다음 미니배치를 가져가서 계산하고 경사 하강법을 수행하고 마지막 미니배치까지

파이토치 3.7 커스텀 데이터셋(Custom Dataset) [내부링크]

torch.utils.data.Dataset을 상속받아 직접 커스텀 데이터셋을 만드는 경우가 있다. class CustomDataset(torch.utils.data.Dataset): def __init__(self): 데이터셋의 전처리를 해주는 부분 def __len__(self): 데이터셋의 길이. 즉, 총 샘플의 수를 적어주는 부분 def __getitem__(self, idx): 데이터셋에서 특정 1개의 샘플을 가져오는 함수 https://wikidocs.net/57165 03-07 커스텀 데이터셋(Custom Dataset) 앞 내용을 잠깐 복습해봅시다. 파이토치에서는 데이터셋을 좀 더 쉽게 다룰 수 있도록 유용한 도구로서 torch.utils.data.Dataset과 torch.utils.data.… wikidocs.net

5. CPU 성능 향상 기법 [내부링크]

클럭 컴퓨터 부품들은 클럭 신호에 맞춰 일사분란하게 움직인다 CPU는 명령어 사이클이라는 정해진 흐름에 맞춰 명령어들을 실행한다. CPU를 빠르게 움직이려면? 클럭 속도를 높인다!! 클럭속도는 헤르츠(Hz)단위로 측정한다. 이는 1초에 클럭이 몇 번 반복되는지를 나타낸다. 클럭이 똑-딱 하고 1초에 한 번 반복되면 CPU 클럭속도는 1Hz인 것이고, 1초에 100번 반복되면 100Hz 실제로 클럭은 매번 속도가 일정하게 유지되지는 않고 고성능을 요하는 순간에는 클럭 속도를 높이고, 그렇지 않을 때는 유연하게 클럭 속도를 낮추기도 함. 최대 속도를 강제로 더 끌어올릴 수도 있는데, 이를 오버클럭킹이라고 한다. 클럭속도를 높이는 방법 외에 CPU의 성능을 높이는 방법 대표적으로는 CPU의 코어와 스레드 수를 높이는 방법이 있음. 우리가 지금까지 CPU로 정의해온 명령어를 실행하는 부품 이라는 것은 코어라고 사용되고 있다. 즉, CPU는 명령어를 실행하는 부품 - > 명령어를 실행하는 부

6. 메모리(RAM)와 캐시 메모리 [내부링크]

휘발성 저장 장치: 전원을 끄면 저장된 내용이 사라지는 저장장치 (RAM) 비휘발성 저장 장치: 전원이 꺼져도 저장된 내용이 유지되는 저장 장치 (하드 디스크, SSD, CD-ROM , USB와 같은 보조 기억 장치 ) 보조기억장치는 전원을 꺼도 내용이 유지되지만, CPU는 보조기억장치에 직접 접근하지못함. 그래서 일반적으로는 비휘발성 저장 장치에는 보관할 대상을 저장하고, 휘발성 저장 장치 RAM에는 실행할 대상을 저장함 CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행함 그래서 RAM이 크면 보조기억장치에서 많은 데이터를 가져와 미리 RAM에서 실행할 수 있어서 동시에 빠르게 실행하는데 유리함 DRAM(Dynamic RAM) 시간이 지나면 저장된 데이터가 점차 사라지는 RAM 그렇기 때문에 데이터의 소멸을 막기위해 일정 주기로 데이터를 재활성화(다시 저장) 해야함 소비전력이 낮고, 저렴하고, 집적도(더 작고 빽빽하게 만들 수 있는)

스터디 1회차 [내부링크]

메모리와 보조기억장치의 차이점 메모리의 휘발성 메모리는 전원장치를 그면 저장된 내용이 사라지지만 보조기억장치는 그렇지 않음 현재 전세계적으로 가장 많이 쓰이는 문자 인코딩 방식은? 유니코드 방식: 모든 언어를 아우르는 문자 집합과 통일된 인코딩 방식 스택과 큐의 개념과 차이점 스택: 후입선출 큐: 선입선출 CPU와 GPU의 차이 CPU: 중앙처리장치로서 컴퓨터 및 운영체제에 필요한 명령과 처리를 실행 GPU: 픽셀로 이루어진 영상을 처리, 반복적이고 비슷한 대량의 연산을 병렬적으로 수행하여 빠 데이터를 읽어 온다고할 때 시스템 버스를 통해 어떤 것을 주고 받는지 설명해주세요. 주소버스: 주소를 주고받음 데이터버스: 명령어와 데이터를 주고받음 제어버스: 제어신호를 주고받음 8바이트는 몇 비트인가요? 64bit Memory와 Register의 차이점? 레지스터는 CPU가 현재 처리하고있는 데이터를 보유 메모리 는 프로그램이 실행에 필요한 프로그램 명령과 데이터를 보유 컴파일 되는 과정을

4-1 로지스틱 회귀 [내부링크]

이진분류 (Binary Classification) 이런 데이터가 있다고 해보자 이것을 그래프로 그리면 이렇게 된다. 이런 x y관계를 표현하기 위해서는 Wx+ b와 같은 직선 함수가 아니라 S자 형태로 표현할 수 있는 함수가 필요하다. 이런 문제에 직선을 사용할 경우 분류 작업이 잘 동작하지 않는다. 그래서 로지스틱회귀는 의 가설을 사용할것이다. 이것이 바로 시그모이드다 시그모이드 함수의 방정식이다. x가 0일 때 0.5의 값을 가지고 x가 매우 커지면 1에 수렴한다. 이걸보면 가중치에 따라서 그래프의 경사도가 변하는 것을 알 수 있다. 선형회귀에서는 W가 직선의 기울기를 의미했지만, 여기서는 그래프의 경사도를 결정한다. W가 커지면 경사가 커지고, W가 작아지면 경사가 작아진다. b에 따라서는 사이트에선 좌우로 변한다고했지만 위아래..? 로 이동하는것같음 시그모이드 함수의 출력값은 0과 1사이의 값을 가진다. 예를 들어 임계값이 0.5이면 0.5이상이면 1, 이하면 0 으로 판단

4-2. nn.Module로 구현하는 로지스틱 회귀 [내부링크]

import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim torch.manual_seed(1) x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0], [0], [0], [1], [1], [1]] x_train = torch.FloatTensor(x_data) y_train = torch.FloatTensor(y_data) model = nn.Sequential( nn.Linear(2, 1), # input_dim = 2, output_dim = 1 nn.Sigmoid() # 출력은 시그모이드 함수를 거친다 ) model(x_train) # optimizer 설정 optimizer = optim.SGD(model.parameters(), lr=1) nb_epochs = 1000 for epoch in

7장 [내부링크]

신경망은 인접하는 계층의 모든 뉴런과 결합되어 있음 이를 완전결합이라고 하고, 완전히 연결된 계층을 Affine계층 이라는 이름으로 구현했음 완전 신경연결망은 Affine - Relu계층( or Sigmoid)가 이어졌음 CNN에서는 새로운 합성곱계층 (Conv) 과 풀링계층(Pooling)계층이 추가됨 그래서 Conv- Relu - (Pooling) 으로 연결됨 마지막 출력계층은 Affine-softmax 조합을 사용함 완전연결 계층에서는 인접하는 계층의 뉴런이 모두 연결되고 출력수는 임의로 정할 수 있음 그럼 문제점은? 데이터 형상이 무시된다는 점임 이미지인경우 세로 가로 채널(색상)로 구성된 3차원 데이터임 완전연결 계층에 입력할 때는 3차원데이터를 차원데이터로 바꿔줘야함 이미지는 3차원 형상이고 공간적 정보가 담겨있는데 ( 3차원속에서 의미를 갖는 본질적인 패턴 등) 완전연결 계층은 형상을 무시하고 모든 입력 데이터를 동등한 뉴런으로 취급하여 형상에 담긴 정보를 살릴수가 없음

20220223_ML_4일차 RandomSearch 정리 [내부링크]

Random_search # 파라미터 선언 # n_neighbors: range(3, 21) params = {'n_neighbors' : range(3,21)} # Random Search 선언 # cv=5 # n_iter=10 # scoring='accuracy' model = RandomizedSearchCV(model_knn, params, cv = 5, n_iter = 10, scoring = 'accuracy') Random Search: 모든 조합을 다 시도해보는 것이 아니라 각 반복마다 임의의 값을 대입해서 지정한 횟수만큼만 반복하는 것이다. model_knn : 모델을 지정해줘야 하고 params : 하이퍼파라미터 목록을 딕셔너리로 전달한다 cv : 교차검증 시 폴드의 개수 n_iter : 파라미터 검색횟수 (랜덤하게 시도할 횟수) scoring : 평가지표. model.fit(x_train, y_train) 그 다음엔 학습시켜준다 model의 cv_results_

백준 2667. 단자번호붙이기 [내부링크]

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 2667번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 질문 게시판 단지번호붙이기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 145109 63307 40033 41.448% 문제 <그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결... www.acmicpc.net 오름차순 정렬이라는 걸 확인을 못해서 좀 헤맸다 ;;;;;;;;;;;;;ㅠ from collections import deque n = int(input()) graph = [] for i in range(n): graph.app

백준 7562. 나이트의 이동 [내부링크]

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 7562번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 질문 게시판 나이트의 이동 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 46895 24012 17884 50.136% 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는... www.acmicpc.net 최소 거리라는 말이 있어서 bfs가 아닌가? 싶었는데 구글링해보니 맞았다 ... from collections import deque n = int(input()) dx = [-1, 1, -1, 1, 2, -2, -2, 2] dy

백준 16234. 인구 이동 [내부링크]

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 ... www.acmicpc.net 마지막에 flag= =false 주는 부분에서 좀 헤맸다;;; 조건을 처음부터 bfs함수가 아니라 메인쪽에 줬으면 됐는데 bfs에 줘가지고 약간 꼬였다 from collections import deque import math n

백준 1181.단어 정렬 [내부링크]

import sys input = sys.stdin.readline n = int(input()) array = [] for _ in range(n): a = input().strip() if a not in array: array.append(a) array.sort() array.sort(key=lambda x: len(x)) for i in array: print(i)

백준 3273. 두수의 합 [내부링크]

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 3273번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 두 수의 합 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 32639 11602 8775 35.125% 문제 n개의 서로 다른 양의 정수 a 1 , a 2 , ..., a n 으로 이루어진 수열이 있다. a i 의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, a i + a j = x (1 ≤ i < j ≤ n)을 만족하는 (a i , a j )쌍의 수를 구하는 프로그램을 작성하... www.acmicpc.net 와 넘재밌다 ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ import sys input = sys.stdin.readline n = int(input()) array = list(map(int, input().split())) m = int(input(

백준 2075. N번째 큰수 [내부링크]

https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 문제 N×N의 표에 수 N 2 개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10... www.acmicpc.net 와 이거넘어렵다 ;;;;;;;;;구글링했다 이따가 다시해야겠다 ㅠㅠ import sys import heapq read = lambda: sys.stdin.readline().rstrip() N = int(read()) heap

백준 2170. 선긋기 [내부링크]

https://www.acmicpc.net/problem/2170 2170번: 선 긋기 2170번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 질문 게시판 선 긋기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 192 MB 15134 5421 3984 35.937% 문제 매우 큰 도화지에 자를 대고 선을 그으려고 한다. 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다. 선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자. 이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램... www.acmicpc.net import sys from collections import Counter input = sys.stdin.readline n = int(input()) array= list(tuple(map(int, input().split()))

백준 11497. 통나무 건너뛰기 [내부링크]

https://www.acmicpc.net/problem/11497 11497번: 통나무 건너뛰기 문제 남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이 차가 최소가 되게 하려 한다. 통나무 건너뛰기의 난이도는 인접한 두 통나무 간의 높이의 차의 최댓값으로 결정된다. 높이가 {2, 4, 5, 7, 9}인 통나무들을 세우려 한다고 가정하자. 이를 [2, 9, 7, 4, 5]의 순서로 세웠다면, 가장 첫 통나무와 가장 마지막 통나무 역시 인접해 있다. 즉, 높이가 2인 것과 높이가 5인 것도 서로... www.acmicpc.net 구현할 때 너무 어렵게 생각하지말기 !!!!!!! import sys from collections import Counter input = sys.stdin.readline n = int(input()) for _ in r

혼자 공부하는 컴퓨터구조 + 운영체제 4장 [내부링크]

4-1. ALU와 제어장치 ALU 레지스터 -> 피연산자를 받아들임 제어장치 -> 수행할 연산을 알려주는 제어 신호를 받아들임 연산을 수행한 결과는 특정 숫자, 문자, 메모리 주소가 될 수 있음 이 결과는 바로 메모리에 저장되는 것이 아닌 일시적으로 레지스터에 저장됨 CPU가 메모리에 접근하는 속도 <<<<<<< 레지스터에 접근하는 속도 만약 메모리에 저장한다면 속도가 너무 느려서 레지스터에 우선 저장하는 것임 계산결과와 플래그를 보냄 플래그란? 음수와 양수를 구분하기 위해 사용 '결과는 음수' 또는 결과가 레지스터 공간보다 클 때 '결과값이 크다' 라는 추가정보를 보냄 플래그 종류 의미 예시 부호플래그 연산한 결과의 부호를 나타낸다 플래그1 : 음수 플래그0 : 양수 제로 플래그 연산 결과가 0인지 여부 플래그1 : 결과 == 0 플래그0 : 결과 != 0 캐리 플래그 연산 결과 올림수나 빌림수가 발생했는지 여부 플래그1 : 빌림수,올림수 o 플래그0 : 빌림수,올림수 x 오버플로

파이토치 3-1. 선형회귀 [내부링크]

모델을 학습시키기 위한 데이터는 파이토치의 텐서의 형태를 가지고 있어야 함. 보편적으로 입력은 x , 출력은 y x_train = torch.FloatTensor( [ [1], [2], [3] ] ) y_train = torch.FloatTensor( [ [2], [4], [6] ] ) 머신러닝에서 식을 세울 때 이 식을 가설 이라고 함. 선형 회귀란 학습 데이터와 가장 잘 맞는 하나의 직선을 찾는 일임 이때 선형 회귀의 가설(직선의 방정식)은 다음과 같은 형태를 가짐 이때 x에 곱해지는 W를 가중치(weight), b(bias)를 편향이라고 함 비용함수 = 손실함수 = 오차함수 = 목적함수 https://wikidocs.net/53560 4개의 훈련 데이터가 있고 이를 2차원 그래프에 4개의 점으로 표현한 상태라고 해보자 지금 목표는 4개의 점을 가장 잘 표현하는 직선을 그리는 일이다 뭔가 검은색 직선이 가장 잘 그린 것 같다. 위는 임의로 그려진 주황색 선에 실젯값(점)과 예측값

파이토치 3-2. 자동미분 [내부링크]

경사 하강법을 복습해보자. 경사 하강법은 비용 함수를 미분하여 함수의 기울기(gradient)를 구해서 비용이 최소화 되는 방향을 찾아내는 알고리즘이다. 파이토치는 자동미분을 지원하기에 우리는 손쉽게 경사하강법을 사용할 수 있다 w = torch.tensor(2.0, requires_grad=True) y = w **2 z = 2*y + 5 z.backward() print(w.grad) #8.0 backward() 는 해당 수식의 기울기를 계산한다. w.grad 를 출력하면 미분한 값이 나온다. 출처:https://wikidocs.net/60754 03-02 자동 미분(Autograd) 경사 하강법 코드를 보고있으면 requires_grad=True, backward() 등이 나옵니다. 이는 파이토치에서 제공하고 있는 자동 미분(Autograd) 기능을 수행하고… wikidocs.net

파이토치 3-3. 다중 선형 회귀 [내부링크]

이제 독립변수 x가 하나가 아니라 여러개인 훈련 데이터이다. import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim x1_train = torch.FloatTensor([[73], [93], [89], [96], [73]]) x2_train = torch.FloatTensor([[80], [88], [91], [98], [66]]) x3_train = torch.FloatTensor([[75], [93], [90], [100], [70]]) y_train = torch.FloatTensor([[152], [185], [180], [196], [142]]) w1 = torch.zeros(1, requires_grad=True) w2 = torch.zeros(1, requires_grad=True) w3 = torch.zeros(1, requires_grad=True) b

파이토치 3-4. nn.Module로 구현하는 선형 회귀 [내부링크]

파이토치에서는 선형회귀모델이 nn.Linear() , 평균 제곱오차는 nn.functional.mse_loss() 라는 함수로 구현되어 있다. #선형 회귀 모델 import torch.nn as nn model = nn.Linear(input_dim, output_dim) # 평균 제곱 오차 import torch.nn.functional as F cost = F.mse_loss(prediction, y_train) model 에는 w와 b가 저장되어 있는데 한번 불러보자 w 에는 0.5153 b에는 -0.4414 가 들어가 있는데 이는 랜덤으로 초기화 되어있는 것이다 optimizer는 model.parameters() 를 이용하여 w와 b를 전달한다. lr는 0.01로 설정한다 . 훈련시킨 모델을 테스트 해보자 y= 2x 가 정답이었는데 4를 넣으니 8이 나왔다. w는 2이고 b는 0인 것을 확인할 수 있다. 총 정리 해보자면 H(x) 식에 입력x로 부터 예측된 y를 얻는 것을

백준 2805.나무자르기 [내부링크]

import sys from collections import Counter input = sys.stdin.readline n,m = map(int,input().split()) tree = list(map(int,input().split())) start = 0 end = max(tree) while start <=end: mid = (start + end) // 2 total = 0 for i in tree: if i > mid: total = total + ( i-mid) if total < m: end = mid-1 else: start = mid + 1 result = mid print(result) 이거 이코테책에 있어서 되게 쉽게 풀었다

백준 2512.예산 [내부링크]

import sys from collections import Counter input = sys.stdin.readline n = int(input()) array = list(map(int,input().split())) m = int(input()) start = 0 end = max(array) while start <=end: mid = (start + end ) // 2 total = 0 for i in array: if i > mid: total = total + mid else: total = total + i if total <= m: start = mid + 1 else: end = mid - 1 print(end) #print(min(start, mid, end)) 마지막에 print(mid) 주고있어서 계속 틀렸다 ...... 왜 end값을 줘야되는지 모르겠는데 그냥 다뽑아서 최솟값 줘도 맞다고 뜨긴한다

백준 16564.히오스 프로게이머 [내부링크]

https://www.acmicpc.net/problem/16564 16564번: 히오스 프로게이머 16564번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 히오스 프로게이머 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 512 MB 2591 819 574 38.064% 문제 성권이는 Heroes of the Storm 프로게이머 지망생이다. 이 게임에는 총 N개의 캐릭터가 있다. 그리고 현재 각 캐릭터의 레벨은 X i 이다. 성권이는 앞으로 게임이 끝날 때까지, 레벨을 최대 총합 K만큼 올릴 수 있다. 팀 목표레벨 T =min(X i ) (1 ≤ i ≤ N)라고 정의하면, 게임이 끝날 때까지 성권이... www.acmicpc.net import sys from collections import Counter input = sys.stdin.readline n,m = map(int,input().split()) array = [] for i in ran

백준 1339. 단어수학 [내부링크]

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 문제 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다면, 두 수의 합은 99437이... www.acmicpc.net import sys maxi = 100000000000 input = sys.stdin.readline n = int(input()) array = [] for i in range(n): array.append(input().stri

백준 7576.토마토 [내부링크]

https://www.acmicpc.net/problem/7576 7576번: 토마토 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 ... www.acmicpc.net import sys from collections import deque input = sys.stdin.readline n,m = map(int,input().split()) graph = [] res = 0 for i in range(

백준 1789.수들의 합 [내부링크]

https://www.acmicpc.net/problem/1789 1789번: 수들의 합 1789번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 수들의 합 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 43238 17537 14928 41.748% 문제 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 입력 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. 출력 첫째 줄에 자연수 N의 최댓값을 출력한다. 예제 입력 1 복사 200 예제 출력 1 복사 19 출처 문제를 만든 사람: author5 데이터를 추가한... www.acmicpc.net n = int(input()) sum = 0 i = 1 while sum < n: i = i + 1 sum = sum + i print(i-1) while으로 돌려서 풀었다 왜 for문은 오류뜨지?(모르겟음..) n = int(inpu

백준 1449. 수리공 항승 [내부링크]

https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 1449번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 수리공 항승 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 17111 7989 6644 46.611% 문제 항승이는 품질이 심각하게 나쁜 수도 파이프 회사의 수리공이다. 항승이는 세준 지하철 공사에서 물이 샌다는 소식을 듣고 수리를 하러 갔다. 파이프에서 물이 새는 곳은 신기하게도 가장 왼쪽에서 정수만큼 떨어진 거리만 물이 샌다. 항승이는 길이가 L인 테이프를 무한개 가지고 있다. 항승이는 테이프를 이용해서 물을 막으려고 한다. 항승이... www.acmicpc.net 옛날에 싸피준비할 때 풀었던 건데 금방 생각이 안나서 예전 풀이 보고 다시풀었다 ...... n,m = map(int,input().split()) array = [] array = list(map(int, input().split

백준 15903. 카드합체놀이 [내부링크]

https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 15903번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 카드 합체 놀이 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 (추가 시간 없음) 512 MB 11440 4947 4111 43.224% 문제 석환이는 아기다. 아기 석환이는 자연수가 쓰여져있는 카드를 갖고 다양한 놀이를 하며 노는 것을 좋아한다. 오늘 아기 석환이는 무슨 놀이를 하고 있을까? 바로 카드 합체 놀이이다! 아기 석환이는 자연수가 쓰여진 카드를 n장 갖고 있다. 처음에 i번 카드엔 a i 가 쓰여있다. 카드 합체 놀이는 이 카드들을 ... www.acmicpc.net import heapq n,m = map(int,input().split()) array = [] array = list(map(int, input().split())) heapq.heapify(array) for i in

백준 2212.센서 [내부링크]

https://www.acmicpc.net/problem/2212 2212번: 센서 2212번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 센서 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 10787 5268 4272 48.151% 문제 한국도로공사는 고속도로의 유비쿼터스화를 위해 고속도로 위에 N개의 센서를 설치하였다. 문제는 이 센서들이 수집한 자료들을 모으고 분석할 몇 개의 집중국을 세우는 일인데, 예산상의 문제로, 고속도로 위에 최대 K개의 집중국을 세울 수 있다고 한다. 각 집중국은 센서의 수신 가능 영역을 조절할 수 있다. 집중국의 수신 가능 영역은 고속도로 ... www.acmicpc.net import heapq n = int(input()) k = int(input()) array = list(map(int,input().split())) temp = [] array.sort() for i in range(1,n): tem

백준 11501.주식 [내부링크]

https://www.acmicpc.net/problem/11501 11501번: 주식 11501번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 주식 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 5 초 256 MB 12226 4190 3280 34.028% 문제 홍준이는 요즘 주식에 빠져있다. 그는 미래를 내다보는 눈이 뛰어나, 날 별로 주가를 예상하고 언제나 그게 맞아떨어진다. 매일 그는 아래 세 가지 중 한 행동을 한다. 주식 하나를 산다. 원하는 만큼 가지고 있는 주식을 판다. 아무것도 안한다. 홍준이는 미래를 예상하는 뛰어난 안목을 가졌지만, 어떻게 해야 자신이 최대 이익을 얻을... www.acmicpc.net import heapq n = int(input()) for j in range(n): m = int(input()) result = 0 array = list(map(int,input().split())) maxi = array[-1

백준 2644.촌수계산 [내부링크]

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 문제 우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다. 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오. 입력 사람들은 1, 2... www.acmicpc.net from collections import deque n = int(input()) x, y = map(int, input().split()) m = int(input()) graph = [[] * n for i in range(n +

백준 4964. 섬의 개수 [내부링크]

queue = deque([(x, y)]) 라고 적는 것 잊지말기 queue = deque([x,y]) 라고 하면 오류난다 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 문제 정사각형으로 이루어져 있는 섬과 바다 지도가 주어진다. 섬의 개수를 세는 프로그램을 작성하시오. 한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다. 두 정사각형이 같은 섬에 있으려면, 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야 한다. 지도는 바다로 둘러싸여 있으며, 지도 밖으로 나갈 수 없다. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정... www.acmicpc.net from collections import deque dx = [0, 0, -1, 1, 1, 1, -1, -1]

3.5 신경망 [내부링크]

신경망은 분류와 회귀 모두에 이용할 수 있음 일반적으로 회귀에는 항등함수, 분류에는 소프트맥스 함수를 사용 항등함수는 입력을 그대로 출력함 그림 3-21 소프트맥스 함수 exp(x) 는 e^x 를 뜻하는 지수함수 n은 출력층의 뉴런수 yk는 그중 k번쨰 출력 분자는 ak의 지수함수 , 분모는 모든 a의 지수함수의 합 import numpy as np import matplotlib.pylab as plt def softmax(a): exp_a = np.exp(a) sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y a = np.array([0.3, 2.9, 4.0]) print(softmax(a)) #[0.01821127 0.24519181 0.73659691] 이렇게 구현하면 오버플로우 문제가 있음 import numpy as np import matplotlib.pylab as plt def softmax(a): c = np.ma

혼자 공부하는 컴퓨터구조+ 운영체제 1장 [내부링크]

컴퓨터구조는 크게 두가지로 나눌 수 있는데 컴퓨터가 이해하는 정보 데이터(문자, 숫자, 이미지 등) 명령어 컴퓨터의 네가지 핵심 부품 만약 누가 컴퓨터를 한마디로 정의해보라고 한다면? 컴퓨터는 명령어를 처리하는 기계라고 할 수 있다. 그렇기에 컴퓨터를 실질적으로 작동시키는 명령어가 더 중요하다 즉, 명령어는 데이터를 움직이고 컴퓨터를 작동시키는 정보이다. ex) '안녕하세요' : 데이터, '화면에 '안녕하세요'를 출력하라' : 명령어 'cat.jpg' : 데이터, USB메모리에 cat.jpg를 저장하라: 명령어 다시말해, 명령어는 컴퓨터를 작동시키는 정보이고, 데이터는 명령어를 위해 존재하는 일종의 재료이다 . 컴퓨터의 4가지 핵심 부품 중앙처리장치 (CPU) 주기억장치 (메모리) RAM ROM 보조기억장치 입출력장치 메인보드 안에 시스템버스가 있음 CPU내부에 산술논리연산장치, 제어장치, 레지스터들이 있음 메모리는 메인보드 내 시스템버스와 연결되어 있음 보조 기억장치는 메인보드 내

혼자 공부하는 컴퓨터구조+ 운영체제 2장 [내부링크]

컴퓨터는 0과 1로 모든 정보를 표현하고, 0과 1로 표현된 정보만을 이해할 수 있음 0과1을 나타내는 가장 작은 정보 단위를 비트(bit) 라고함 1비트가 0과 1 2가지 정보를 표현할 수 있다면, 2비트는 4가지 3비트는 8가지의 정보를 표현할 수 있음 즉, n비트는 2^n가지 정보를 표현할 수 있는 것임 바이트 : 1비트 8개 = 2^8개의 정보 1킬로바이트(1KB) : 1바이트 1000개 1메가바이트(1MB): 1킬로바이트 1000개 1기가바이트(1GB) : 1메가바이트 1000개 1테라바이트(1TB): 1기가바이트 1000개 이진법법 우리는 컴퓨터에 숫자를 알려주려면 십진수가 아닌 이진수로 알려줘야함 8을 이진수로 표기하면 1000이 되는데 천과 혼동되지 않기 위해서 1000(2) 또는 0b1000 이라고 표현함 컴퓨터는 음수를 이해할 수 없기 때문에 음수를 표현하기 위해서 2의 보수를 사용함 2의보수는 0 -> 1 , 1->0 하고 + 1 한 값임. 예를들어, 11(2)

혼자 공부하는 컴퓨터구조+ 운영체제 3장 [내부링크]

저급언어와 고급언어 컴퓨터를 작동시키는 정보가 명령어라면 c, c++, java와 파이썬과 같은 프로그래밍 언어로 만든 소스코드는 무엇일까? 모든 소스코드는 컴퓨터 내부에서 명령어로 변환된다 (print('hello') 는 1000101 이런 명렁어로) 파이썬 , C C++ 과 같은 언어를 고급 언어라고 한다. 컴퓨터가 아닌 사람이 이해하고 작성하기 쉽게 만들어진 언어 반대로 사람이 아닌 컴퓨터가 이해하고 실행할 수 있는 언어를 저급 언어라고 한다. 그래서 고급언어로 작성괸 소스코드는 명령어(저급언어)로 변환이 된다 저급언어에는 기계어와 어셈블리어가 있다 기계어는 0과 1의 명령어 비트로 이루어진 언어이다 가독성을 위해 십육진수로 표현되기도 한다 010101001001010101010111 이런건 우리가 이해하기 어렵다 그래서 등장한 저급언어가 어셈블리어이다. 01010과 같은 명령어를 읽기 편한 형ㅇ태로 번역한 언어다. 010101 -> push rbp 어셈블리어는 기계어를 읽기

백준 2750.수 정렬하기 [내부링크]

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 2750번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 수 정렬하기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 160618 91505 63440 58.041% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 ... www.acmicpc.net import sys n = int(sys.stdin.readline()) array = [] for _ in range(n): array.append(int(sys.stdin.readline())) array.sort() for i

백준 1920.수 찾기 [내부링크]

import sys n = int(sys.stdin.readline()) array = set(map(int, sys.stdin.readline().split())) m = int(sys.stdin.readline()) temp = list(map(int, sys.stdin.readline().split())) for i in temp: if i in array: print(1) else: print(0) 난 이렇게풀었는데 뭔가 이렇게 푸는게 아닌것 같아서 구글링해봤다 .......... 이분탐색으로 풀었네 ㅠㅠ import sys input = sys.stdin.readline n = int(input()) array = list(map(int, input().split())) m = int(input()) temp = list(map(int, input().split())) array.sort() def binary(i): first = 0 end = n - 1 while fir

백준 2108. 통계학 [내부링크]

https://www.acmicpc.net/problem/2108 2108번: 통계학 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어... www.acmicpc.net import sys from collections import Counter input = sys.stdin.readline array = [] n = int(input()) for i in range(n): array.append(in

백준 2470.두 용액 [내부링크]

https://www.acmicpc.net/problem/2470 2470번: 두 용액 2470번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 두 용액 스페셜 저지 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 (추가 시간 없음) 128 MB 40392 12488 9002 30.233% 문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의... www.acmicpc.net import sys maxi = 100000000000 input = sys.stdin.readline n = int(input()) array = list(map(int, sys.stdin.readline().split())) arra

백준 1461.도서관 [내부링크]

https://www.acmicpc.net/problem/1461 1461번: 도서관 1461번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 게시판 도서관 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 7622 3559 2869 46.492% 문제 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책들의 원래 위치가 주어질 때, 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 계산하는 프로그램을 작성하시오. 세준이는 한 걸음에 좌표 1칸씩 가... www.acmicpc.net import sys input = sys.stdin.readline n, m = map(int, input().split()) array = list(map(int, sys.stdin.readline().split())) neg = []

4. 신경망 학습 [내부링크]

학습: 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 신경망은 이미지를 있는 그대로 학습한다 딥러닝을 종단간 기계학습(end to end machine learning)이라곻 ㅏ는데 데이터(입력)에서 목표한 결과(출력)를 얻는다는 뜻. 기계학습 문제는 데이터를 train data와 test data로 나눠 학습과 실험을 수행하는 것이 일반적임 그런 다음 시험 데이터를 사용하지않고 훈련한 모델의 실력을 평가함 왜 나누는 거냐면 우리는 범용적으로 사용할 수 있는 모델을 원하기 때문임 즉, 범용 능력을 제대로 평가하구 위해 훈련 데이터와 시험 데이터를 분리 하는 것임 범용능력이란? 아직 보지못한 데이터(훈련데이터에 포함되지 않는 데이터)로 문제를 올바르게 풀어내는 능력 이 범용 능력을 획득하는 것이 기계학습의 최종 목표임 데이터 셋 하나만으로 매개변수의 학습과 평가를 수행하면 올바른 평가가 될 수 없음. 수중의 데이터는 잘 맞히더라도 다른 데이터셋에서는 못맞힐수도 있음

백준 10816. 숫자카드2 [내부링크]

import sys from collections import Counter input = sys.stdin.readline n = int(input()) card = list(map(int,input().split())) m = int(input()) test = list(map(int,input().split())) count = Counter(card) for i in range(len(test)): if test[i] in count: print(count[test[i]], end=' ') else: print(0, end=' ') 시간초과를 줄이기 위한 팁 input() -> sy.stdin.readline() 사용하기 count()-> Counter() 사용하기 : Counter은 빈도수를 딕셔너리 형태로 만듬 Counter({10: 3, 3: 2, -10: 2, 6: 1, 2: 1, 7: 1}) 이렇게 뜨게 해줌 이진탐색 문제라고 해서 이진탐색으로 풀려고했는데 시간초과떠

20220223_ML_4일차 정리 [내부링크]

로지스틱 회귀 만약 타겟이 0(합격)또는 1(불합격)으로 나뉘는 분류문제 같은 경우? 이렇게 그려질 것이다 우리는 선형회귀선을 찾는 것이 아닌 로지스틱 함수에 의해 반환되는 값을 확률로 간주하여 그 확률에 따라 분류를 결정할 것이다!!!! 좀 더 알아보고 싶어서 구글링해본결과 로지스틱 회귀는 비선형 문제를 해결하는 데 사용할 수 없으며 불행히도 오늘날의 많은 시스템은 비선형입니다. 또한 로지스틱 회귀는 사용 가능한 가장 강력한 알고리즘이 아닙니다. 훨씬 더 좋고 더 복잡한 예측을 생성할 수 있는 몇 가지 대안이 있습니다. 로지스틱 회귀는 또한 데이터 표시에 크게 의존합니다. 이는 필요한 모든 독립 변수를 식별하지 않는 한 출력이 가치가 없음을 의미합니다. 이산적인 결과의 경우 로지스틱 회귀는 범주형 결과를 예측하는 데만 사용할 수 있습니다. 그리고 마지막으로 과적합에 취약한 것으로 알려진 이력이 있는 알고리즘입니다. 라고 하는 것을 보니 그냥 이런게 있구나 하고 넘어가면 되겟다~!

20220225_ML_5일차 정리 [내부링크]

보팅 여러개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식 즉, 같은 데이터를 서로다른 알고리즘으로 예측해서 투표 배깅 데이터로부터 부트스트랩한 데이터로 모델을 학습시킨 후 학습된 모델의 결과를 집계하여 최종 결과를 얻는 방법 즉, 서로다른 각각의 데이터를 같 알고리즘으로 예측해서 투표 랜덤 포레스트 , 부스팅 ㅎㅎ 뭔말인지 모르겠어서 나중에 정리하겠음 ....

2장 퍼셉트론 [내부링크]

퍼셉트론 다수의 신호를 입력으로 받아 하나의 신호를 출력함 (신호는 강물처럼 흐름이 있는 것임. 퍼셉트론 신호도 흐름을 만들고 정보를 앞으로 전달함) 흐르면 1 안흐르면 0의 값을 가짐 입력신호가 뉴런에 보내질 때는 각각 고유한 가충치가 곱해짐 뉴런에서 보내온 신호의 총합이 한계를 넘을 때만 1을 출력 ( 뉴런이 활성화한다 라고 말하기도 함)하고 이 한계를 임계값 이라고 함 수식으로 나타내면 퍼셉트론은 각각의 고유한 가중치를 뷰여하고 가중치가 클수록 그 신호가 중요하다는 것을 뜻함 AND 게이트 : 모두 1일때만 1 출력 이 게이트로 퍼셉트론을 표현하고 싶다 -> 이 표대로 작동하는 w1 w2 세타 값을 정하면 됨 ex. (0.5 0.5 0.8) (1, 1, 1) NAND 게이트 : AND의 반대 ex (-0.5 -0.5 -0.8) import numpy as np def NAND(x1,x2): x= np.array([x1, x2]) w = np.array([-0.5 , -0.5])

3장 신경망 [내부링크]

퍼셉트론은 복잡한 함수도 표현할 수 있다 그치만 가중치를 설정하는 작업은 여전히 사람이 수동으로 해야한다. 앞장에서 내가 직접 가중치값을 설정 했음 ;;; 그치만!! 신경망이 이것을 해결해준다 먼개소리냐면 신경망이 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 있다는 뜻임 출처 : https://www.tibco.com/ko/reference-center/what-is-a-neural-network 신경망을 그림으로 나타내면 이렇게 되는데 노란색(왼쪽) 입력층 0층 빨간색(오른쪽) 출력층 1층 초록색(중간) 은닉층 2층 은닉층은 사람 눈에 보이지 않음 앞장에서 본 퍼셉트론이랑 뭐가 달라졌을까? 퍼셉트론을 다시 보자면 이런 그림이었다 근데 여기에는 편향이 나타나있지 않음 이걸 간결하게 식으로 나타내면 입력신호의 총합이 h(x) 함수를 거쳐 변환되고 그 변환된 값이 y로 출력됨을 보여준다. h(x)는 0을 넘으면 1 , 아니면 0 이처럼 입력신호의 총합을 신호로 변