Fx 전송 튜토리얼

마지막 업데이트: 2022년 5월 25일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
Choice는 Question에 외래키로 연결되어 있다.

Analytics 튜토리얼

Adobe Analytics를 최대한 활용하십시오. 이 튜토리얼을 사용하여 Analytics의 기능을 숙지하고 비즈니스의 이점을 누리십시오. 이 콘텐츠는 관리자, 데이터 분석가, 마케터, 개발자 및 아키텍트에게 적합합니다.

  • 최신 업데이트 및 기능에 대한 자세한 내용은 아래의 "새로운 기능" 섹션을 참조하십시오.
  • 직원 선택​은 당사가 가장 좋아하는 콘텐츠 중 일부를 강조 표시합니다.
  • 왼쪽 내비게이션​에서 주제 및 하위 항목별로 내용 탐색
  • 배우고 싶은 것을 알고 있는 경우에는 페이지 상단에 있는 검색 필드를 사용하십시오.

또한 과정 섹션에서 역할 및 기술 수준별로 선별된 학습 경험이 제공됩니다. Adobe ID로 로그인하고 상단 탐색에서 학습 > 추천 과정​으로 이동하기만 하면 됩니다.

새로운 기능

Adobe Analytics 모바일 스코어카드 빌더(비디오)
Analysis Workspace에서 만든 모바일 스코어카드를 만들고 공유하여 경영진 사용자를 지원하는 방법에 대해 알아보십시오.

Adobe Analytics 모바일 스코어카드 앱
모바일 스코어카드 애플리케이션을 다운로드하고 Analysis Workspace에서 만든 모바일 스코어카드를 보는 방법에 대해 알아보십시오.

작업 영역의 주석(비디오)
Analysis Workspace의 주석을 사용하면 상황별 데이터 뉘앙스와 통찰력을 귀사 전체의 사용자에게 효과적으로 전달할 수 있습니다. 알려진 데이터 문제, 공휴일, 캠페인 시작으로 날짜 또는 날짜 범위에 주석을 달아 선 차트, 표 등에서 표시되는 내용을 사용자에게 보다 명확하게 알릴 수 있습니다.

직원 선택

Analysis Workspace의 알고리즘 속성 모델은 통계 기술을 사용하여 선택한 지표에 대한 크레딧의 최적 할당을 동적으로 결정합니다.

Analysis Workspace 교육용 튜토리얼은 사용자가 Workspace에서 첫 번째 분석을 구축하기 위한 일반적인 용어와 단계를 안내합니다.

롤 튜토리얼 하는법 #1

롤 튜토리얼 하는법 시리즈를 통해서 롤 입문을 위한 기초적인 내용들을 배우게됩니다. 초보이신 분들을 대상으로 도움이 되었으면해서 글을 올렸어요. 그리고 자세하게 진행하는것을 목표로 만들어 봤어요. 혹시라도 이전에 튜토리얼을 건너띈 경우나, 다시 해볼려고 하는분들도 따라서 Fx 전송 튜토리얼 하면 됩니다. 리그오브레전드의 튜토리얼은 모두 3단계로 구성되어있어서 각단계마다 각각의 글로 작성했습니다. 이글의 끝부분에 동영상도 첨부했어요. 혹시라도 컴퓨터나 모바일 기기로 과정 하나하나를 진행할때 동영상도 같이 보면서 하면 좋을것같아요. 그러면 '튜토리얼 하는법 #1'을 진행할게요.

1. 로그인한후에 나오는 화면에서 다음과 같이 진행하세요.

'게임시작'버튼 -> '훈련'탭 -> '튜토리얼'아이콘 -> '확인'버튼 순서로 클릭합니다.

2. 튜토리얼1단계 '리그오브레전드에 오신것을 환영합니다.' 가 화면의 중앙에 있어요. 그리고 1단계를 완료하면 150XP를 보상으로 준다고 합니다. 보상부분은 '롤 일일플레이보상 레벨업보상 그리고 각성임무보상' 글을 참조하세요. 이 상태에서 '지금시작'버튼을 클릭하세요.

3. 튜토리얼이 시작되었습니다. 화면속의 챔피언의 이름은 '미스포츈'입니다. 처음 롤을 하는분은 지금 솔직히 무엇을 해야할지 몰라요. 가만히 기다려 봅니다.

4. 잠시후에 화면에 마우스우클릭하라는 안내그림이 나왔네요. 여기에서 우리가 알아야할 포인트는, 챔피언을 이동시킬때는 원하는 곳에서 '마우스우클릭'한다는 것이죠. 화면의 여러곳을 우클릭해보면서 테스트해보세요. 처음하는분들도 곧 익숙해집니다.

5. 작은 보라색원안의 유닛은 적팀미니언입니다. 이들 미니언들위에서 마우스우클릭을 해보세요. 그러면 우리팀챔피언이 그적팀미니언을 공격합니다. 공격을 다시하지않아도 자동으로 계속 공격하죠. 이렇게 공격을 해서 적팀미니언을 처치하면 골드를 받게됩니다. 이렇게 모은 골드는 아이템을 사는데 사용하죠.

이동(무빙) -> 그냥 원하는 빈곳에서 마우스우클릭

공격(기본공격 또는 평타) -> 적팀미니언이나 유닛위에서 마우스우클릭

Q, W, E, 그리고 R스킬

6. 이동하고 공격하는것을 반복해서 하다보면 적팀미니언들을 거의 처치하게됩니다. 그러다보면 적팀챔피언이 나타나죠. 챔피언은 여러가지면에서 미니언과는 비교가 안되는 체력과 공격능력을 가지고 있어요. 이동과 기본공격만으로는 힘들다는 얘기죠. 그래서 롤에서는 스킬(skill)이라는 또다른 능력을 제공합니다. 챔피언 미스포츈의 Q, W, E, R 스킬을 그림과 함께 설명할게요. 잘 이해해서 적팀챔피언을 처치하는데 사용하세요.

Q스킬 은 키보드의 Q키를 왼손 소지(새끼손가락)으로 누른채로 적팀미니언이나 적팀챔피언을 마우스좌클릭하면된다. 그림에서보면 클릭된 적팀미니언(부채꼴의 꼭지점에 해당)과 바로뒤의 미니언(부채꼴안에 해당)이 피해를 입게됩니다.

W스킬 은 키보드의 W키만 왼손 약지(약손가락)로 눌렀다가 놓아주면 돼요. 그러면 스킬이 동작되는 동안에는 미스포츈의 양쪽 팔부분에 불꽃이 돌게됩니다. 스킬창의 해당 W스킬아이콘을 직접 클릭해도되요.

E스킬 은 키보드의 E키를 왼손 중지(가운뎃손가락)로 누른채로 공격하기를 원하는 지역을 마우스좌클릭하면됩니다. 적팀유닛이 아닌 해당 지역을 클릭하는 것이라서 훨씬 사용하기가 쉬워요.

R스킬 은 왼손 검지(집게손가락)로 R키를 누른채로 원하는 방향에서 마우스좌클릭하면 됩니다. 미스포츈의 가장 강력한 스킬이면서 또한 재사용대기시간(쿨타임)이 가장 길어요. 한번 스킬을 사용하고나서 다시 사용할수있게 될때가지 기다려야하는 시간을 재사용대기시간(쿨타임)이라고 불러요. 실제 스킬을 사용해서 적팀미니언과 챔피언을 처치하는것은 이글 맨끝에 있는 동영상을 참조하세요.

7. 적팀챔피언을 처치하고나면 다양한 챔피언을 선택해서 사용해보라고 합니다. 각각의 챔피언들에게 가까이 가면 점선으로 연결시켜줍니다. 그럼 이번에는 다른 챔피언으로 바꾸어볼게요. 여기서는 '럭스'를 선택했어요. 지금 그림속에서 점선으로 연결되어있는 챔피언이죠. 이동과 기본공격은 방식이 똑같아요. 직접 확인해보세요. 그리고 Q, W, E, R 스킬은 챔피언마다 그 기능이 달라요. 각각의 스킬설명은 이글에서는 생략합니다. 이제부터 이동하고 기본공격하고 또는 스킬공격하면서 적팀과 싸워보세요.

막타의 개념

8. 미니언에게 데미지를 입히는 여러 공격중에서, 적팀미니언을 처치한 마지막 공격을 '막타'라고 불러요. 여러분이 그 막타의 주인공이면 골드를 받습니다. 아무리 해당 미니언을 공격해서 데미지를 주었더라도, 그 미니언을 처치하는 마지막 공격을 놓쳤다면 골드를 받지 못해요. 반대로 누군가가 적팀미니언을 거의 죽게 만들었을때, 살짝 공격을 가해서 그 미니언을 처치했다면 막타의 주인공이 되어 골드를 받게됩니다.

(그림설명) 지금 챔피언 럭스가 적팀미니언(레드컬러)을 공격하려고 합니다. 잘보면 노란원안의 적팀미니언은 체력이 크게 떨어져있어요. 만약 이때 럭스의 공격이 가해지면 이 미니언은 죽게될겁니다. 그러면 럭스는 처치한 마지막공격(막타)의 주인공이 되니까, 골드를 받게되겠죠. 지금은 개념만 잡고 넘어가도돼요.

포탑의 공격우선순위

9. 자 이제 포탑에 대해 알아보겠습니다. 아래그림에서 화살표가 가리키고있는 녹색원이 포탑의 공격사거리입니다. 자세히 보면 아군미니언(푸른색)들이 적팀의 포탑사거리안으로 들어가고 있어요. 그러자 적팀포탑은 가장먼저 자신의 사거리안으로 들어온 아군미니언을 향해 포를 발사했습니다. 잠시후 그 아군미니언은 포탄을 맞을것같아 보여요.

여기서 간단한 포탑의 공격룰 3가지를 배워보죠.

>포탑은 가장먼저 자신의 사거리 안으로 들어온 적을 공격합니다.

>포탑은 가장먼저 자신의 사거리 안으로 들어온 적이 제거된 경우, 나머지 사거리안에 있는 상대팀유닛중에서 챔피언보다 미니언을 먼저 공격합니다.

>포탑은 상대팀챔피언이 자기팀챔피언을 사거리안에서 공격하면, 상대팀미니언을 공격하고 있더라도 공격대상을 바꾸어 그 상대팀챔피언을 공격합니다. (자기팀챔피언을 지키는것이 우선이라고 생각합니다.)

(그림설명) 럭스도 잠시후엔 적팀포탑의 사거리 안으로 들어가서 기본공격으로 적팀포탑을 공격할겁니다. 대다수의 경우, 챔피언의 스킬들은 포탑에 데미지를 주지 않습니다. 그러니까 포탑은 기본공격(평타)으로만 공격하세요. 즉 적팀포탑을 마우스오른쪽버튼으로 클릭해서 공격합니다.

10. 공격을 계속해서 결국 적팀 1차포탑을 파괴했습니다. 여러분도 지금까지 배운 내용으로 적팀의 1차포탑을 파괴하고, 계속해서 그뒤에 약간 떨어져있는 2차포탑까지 파괴해보세요. 1차포탑과 2차포탑은 그 역할이 비슷합니다.

11. 포탑들을 부수면 많은양의 골드를 얻게되요. 우리팀의 여러챔피언들이 같이 포탑을 부수는데 공헌했다면, 모두 공평하게 골드를 나누어 가지게 됩니다. 아래그림은 5명의 아군챔피언들이 모두 모여 2차포탑을 공격하고 있는 모습입니다.

3차포탑과 억제기

12. 3차포탑 또는 억제기를 보호하고 있어서 억제기포탑이라고도 Fx 전송 튜토리얼 부릅니다. 적팀1차포탑을 파괴한뒤에 2차포탑도 파괴했다면, 아래와같은 억제기포탑을 만납니다. 그포탑뒤에 있는것이 억제기입니다. 상대팀억제기가 파괴되면 우리팀에서 강력한 슈퍼미니언이 생성됩니다. 이 슈퍼미니언들은 너무 강력해서 게임의 흐름을 유리하게 만들어줍니다. 그래서 억제기 두개가 파괴된팀은 게임을 이기는것이 너무 어려워집니다. 여러분은 억제기포탑과 억제기를 파괴해보세요.

넥서스포탑과 넥서스

13. 마지막으로 넥서스를 지키는 넥서스포탑입니다. 똑같이 생긴 두개의 포탑이 나란히 있어서 쌍둥이포탑이라고도 부릅니다. 그리고 각팀의 기지내에서 우물을 제외하고 가장 안쪽에 위치해 있는 유닛이 넥서스입니다. 여기서 미니언이 만들어져 나오고 있었죠. 한번더 강조하면, 포탑과 억제기 그리고 넥서스엔 기본공격으로, 적팀챔피언에겐 기본공격 또는 스킬공격으로 공격해주세요.

14. 열심히 공격해서 적팀넥서스를 Fx 전송 튜토리얼 파괴했어요. 넥서스가 부숴지면 게임이 끝납니다. 그리고 계정만들어서 처음으로 튜토리얼 step1을 끝낸 분들은 1레벨에서 2레벨로 레벨업이 됩니다. 2레벨 레벱업 보상으로 연습모드를 사용할수 있게되고 파랑정수 450과 그리고 첫 챔피언을 무료로 받게될거예요. 축하해요.

가지치기 기법(Pruning) 튜토리얼¶

최첨단 딥러닝 모델들은 굉장히 많은 수의 파라미터값들로 구성되기 때문에, 쉽게 배포되기 어렵습니다. 이와 반대로, 생물학적 신경망들은 효율적으로 희소하게 연결된 것으로 알려져 있습니다. 모델의 정확도가 손상되지 않는 범위에서 메모리, 배터리, 하드웨어 소비량을 줄이고, 기기에 경량화된 모델을 배치하며, 개인이 이용하고 있는 기기에서 프라이버시가 보장되기 위해서는 모델에 포함된 파라미터 수를 줄여 압축하는 최적의 기법을 Fx 전송 튜토리얼 파악하는 것이 중요합니다. 연구 측면에서는, 가지치기 기법은 굉장히 많은 수의 파라미터값들로 구성된 모델과 굉장히 적은 수의 파라미터값들로 구성된 모델 간 학습 역학 차이를 조사하는데 주로 이용되기도 하며, 하위 신경망 모델과 파라미터값들의 초기화가 운이 좋게 잘 된 케이스를 바탕으로 (“lottery tickets”) 신경망 구조를 찾는 기술들에 대해 반대 의견을 제시하기도 합니다.

이번 튜토리얼에서는, torch.nn.utils.prune 을 이용하여 여러분이 설계한 딥러닝 모델에 대해 가지치기 기법을 적용해보는 것을 배워보고, 심화적으로 여러분의 맞춤형 가지치기 기법을 구현하는 방법에 대해 배워보도록 하겠습니다.

딥러닝 모델 생성¶

이번 튜토리얼에서는, 얀 르쿤 교수님의 연구진들이 1998년도에 발표한 LeNet 의 모델 구조를 이용합니다.

모듈 점검¶

가지치기 기법이 적용되지 않은 LeNet 모델의 conv1 층을 점검해봅시다. 여기에는 2개의 파라미터값들인 가중치 값과 편향 값이 포함될 것이며, 버퍼는 존재하지 않을 것입니다.

모듈 가지치기 기법 적용 예제¶

모듈에 대해 가지치기 기법을 적용하기 위해 (이번 예제에서는, LeNet 모델의 conv1 층) 첫 번째로는, torch.nn.utils.prune (또는 BasePruningMethod 의 서브 클래스로 직접 구현 ) 내 존재하는 가지치기 기법을 선택합니다. 그 후, 해당 모듈 내에서 가지치기 기법을 적용하고자 하는 모듈과 파라미터를 지정합니다. 마지막으로, 가지치기 기법에 적당한 키워드 인자값을 이용하여 가지치기 매개변수를 지정합니다. 이번 예제에서는, conv1 층의 가중치의 30%값들을 랜덤으로 가지치기 기법을 적용해보겠습니다. 모듈은 함수에 대한 첫 번째 인자값으로 전달되며, name 은 문자열 식별자를 이용하여 해당 모듈 내 매개변수를 구분합니다. 그리고, amount 는 가지치기 기법을 적용하기 위한 대상 가중치값들의 백분율 (0과 1사이의 실수값), 혹은 가중치값의 연결의 개수 (음수가 아닌 정수) 를 지정합니다.

가지치기 기법은 가중치값들을 파라미터값들로부터 제거하고 weight_orig (즉, 초기 가중치 이름에 “_orig”을 붙인) 이라는 새로운 파라미터값으로 대체하는 것으로 실행됩니다. weight_orig 은 텐서값에 가지치기 기법이 적용되지 않은 상태를 저장합니다. bias 은 가지치기 기법이 적용되지 않았기 때문에 그대로 남아 있습니다.

위에서 선택한 가지치기 기법에 의해 생성되는 가지치기 마스크는 초기 파라미터 name 에 weight_mask (즉, 초기 가중치 이름에 “_mask”를 붙인) 이름의 모듈 버퍼로 저장됩니다.

수정이 되지 않은 상태에서 순전파를 진행하기 위해서는 가중치 값 속성이 존재해야 합니다. torch.nn.utils.prune 내 구현된 가지치기 기법은 가지치기 기법이 적용된 가중치값들을 이용하여 (기존의 가중치값에 가지치기 기법이 적용된) 순전파를 진행하고, weight 속성값에 가지치기 기법이 적용된 가중치값들을 저장합니다. 이제 가중치값들은 module 의 매개변수가 아니라 하나의 속성값으로 취급되는 점을 주의하세요.

최종적으로, 가지치기 기법은 파이토치의 forward_pre_hooks 를 Fx 전송 튜토리얼 이용하여 각 순전파가 진행되기 전에 가지치기 기법이 적용됩니다. 구체적으로, 지금까지 진행한 것 처럼, 모듈이 가지치기 기법이 적용되었을 때, 가지치기 기법이 적용된 각 파라미터값들이 forward_pre_hook 를 얻게됩니다. 이러한 경우, weight 이름인 기존 파라미터값에 대해서만 가지치기 기법을 적용하였기 때문에, 훅은 오직 1개만 존재할 것입니다.

완결성을 위해, 편향값에 대해서도 가지치기 기법을 적용할 수 있으며, 모듈의 파라미터, 버퍼, 훅, 속성값들이 어떻게 변경되는지 확인할 수 있습니다. 또 다른 가지치기 기법을 적용해보기 위해, l1_unstructured 가지치기 함수에서 구현된 내용과 같이, L1 Norm 값이 가장 작은 편향값 3개를 가지치기를 시도해봅시다.

이전에서 실습한 내용을 토대로, 명명된 파라미터값들이 weight_orig , bias_orig 2개를 모두 포함할 것이라 예상할 수 있습니다. 버퍼들은 weight_mask , bias_mask 2개를 포함할 것입니다. 가지치기 기법이 적용된 2개의 텐서값들은 모듈의 속성값으로 존재할 것이며, 모듈은 2개의 forward_pre_hooks 을 갖게 될 것입니다.

가지치기 기법 반복 적용¶

모듈 내 같은 파라미터값에 대해 가지치기 기법이 여러번 적용될 수 있으며, 다양한 가지치기 기법의 조합이 적용된 것과 동일하게 Fx 전송 튜토리얼 적용될 수 있습니다. 새로운 마스크와 이전의 마스크의 결합은 PruningContainer 의 compute_mask 메소드를 통해 처리할 수 있습니다.

예를 들어, 만약 module.weight 값에 가지치기 기법을 적용하고 싶을 때, 텐서의 0번째 축의 L2 norm값을 기준으로 구조화된 가지치기 기법을 적용합니다. (여기서 0번째 축이란, 합성곱 연산을 통해 계산된 출력값에 대해 각 채널별로 적용된다는 것을 의미합니다.) 이 방식은 ln_structured 함수와 n=2 와 dim=0 의 인자값을 바탕으로 구현될 수 있습니다.

우리가 확인할 수 있듯이, 이전 마스크의 작용을 유지하면서 채널의 50% (6개 중 3개) 에 해당되는 모든 연결을 0으로 변경합니다.

이에 해당하는 훅은 torch.nn.utils.prune.PruningContainer 형태로 존재하며, 가중치에 적용된 가지치기 기법의 이력을 저장합니다.

가지치기 기법이 적용된 모델의 직렬화¶

마스크 버퍼들과 가지치기 기법이 적용된 텐서 계산에 사용된 기존의 파라미터를 포함하여 관련된 모든 텐서값들은 필요한 경우 모델의 state_dict 에 저장되기 때문에, 쉽게 직렬화하여 저장할 수 있습니다.

가지치기 기법의 재-파라미터화 제거¶

가지치기 기법이 적용된 것을 영구적으로 만들기 위해서, 재-파라미터화 관점의 weight_orig 와 weight_mask 값을 제거하고, forward_pre_hook 값을 제거합니다. 제거하기 위해 torch.nn.utils.prune 내 remove 함수를 이용할 수 있습니다. 가지치기 기법이 적용되지 않은 것처럼 실행되는 것이 아닌 점을 주의하세요. 이는 단지 가지치기 기법이 적용된 상태에서 가중치 파라미터값을 모델 파라미터값으로 재할당하는 것을 통해 영구적으로 만드는 것일 뿐입니다.

재-파라미터화를 제거하기 전 상태

재-파라미터를 제거한 후 상태

모델 내 여러 파라미터값들에 대하여 가지치기 기법 적용¶

가지치기 기법을 적용하고 싶은 파라미터값들을 지정함으로써, 이번 예제에서 볼 수 있는 것 처럼, 신경망 모델 내 여러 텐서값들에 대해서 쉽게 가지치기 기법을 적용할 수 있습니다.

전역 범위에 대한 가지치기 기법 적용¶

지금까지, “지역 변수” 에 대해서만 가지치기 기법을 적용하는 방법을 살펴보았습니다. (즉, 가중치 규모, 활성화 정도, 경사값 등의 각 항목의 통계량을 바탕으로 모델 내 텐서값 하나씩 가지치기 기법을 적용하는 방식) 그러나, 범용적이고 아마 더 강력한 방법은 각 층에서 가장 낮은 20%의 연결을 제거하는것 대신에, 전체 모델에 대해서 가장 낮은 20% 연결을 한번에 제거하는 것입니다. 이것은 각 층에 대해서 가지치기 기법을 적용하는 연결의 백분율값을 다르게 만들 가능성이 있습니다. torch.nn.utils.prune 내 global_unstructured 을 이용하여 어떻게 전역 범위에 대한 가지치기 기법을 적용하는지 살펴봅시다.

이제 각 층에 존재하는 연결들에 가지치기 기법이 적용된 정도가 20%가 아닌 것을 확인할 수 있습니다. 그러나, 전체 가지치기 적용 범위는 약 20%가 될 것입니다.

torch.nn.utils.prune 에서 확장된 맞춤형 가지치기 기법¶

맞춤형 가지치기 기법은, 다른 가지치기 기법을 적용하는 것과 같은 방식으로, BasePruningMethod 의 기본 클래스인 nn.utils.prune 모듈을 활용하여 구현할 수 있습니다. 기본 클래스는 __call__ , apply_mask , apply , prune , remove 메소드들을 내포하고 있습니다. 특별한 케이스가 아닌 경우, 기본적으로 구성된 메소드들을 재구성할 필요가 없습니다. 그러나, __init__ (구성요소), compute_mask (가지치기 기법의 논리에 따라 주어진 텐서값에 마스크를 적용하는 방법) 을 고려하여 구성해야 합니다. 게다가, 가지치기 기법을 어떠한 방식으로 적용하는지 명확하게 구성해야 합니다. (지원되는 옵션은 global , structured , unstructured 입니다.) 이러한 방식은, 가지치기 기법을 반복적으로 적용해야 하는 경우 마스크를 결합하는 방법을 결정하기 위해 필요합니다. 즉, 이미 가지치기 기법이 적용된 모델에 대해서 가지치기 기법을 적용할 때, 기존의 가지치기 기법이 적용되지 않은 파라미터 값에 대해 가지치기 기법이 영향을 미칠 것으로 예상됩니다. PRUNING_TYPE 을 지정한다면, 가지치기 기법을 적용하기 위해 파라미터 값을 올바르게 제거하는 PruningContainer (마스크 가지치기 기법을 반복적으로 적용하는 것을 처리하는)를 가능하게 합니다. 예를 들어, 다른 모든 항목이 존재하는 텐서를 가지치기 기법을 구현하고 싶을 때, (또는, 텐서가 이전에 가지치기 기법에 의해 제거되었거나 남아있는 텐서에 대해) 한 층의 개별 연결에 작용하며 전체 유닛/채널 ( 'structured' ), 또는 다른 파라미터 간 ( 'global' ) 연결에는 작용하지 않기 때문에 PRUNING_TYPE='unstructured' 방식으로 진행됩니다.

무료 튜토리얼로 MATLAB 및 Simulink 학습 시작하기

대화형 방식의 교육과정을 통해 지식을 향상시키고 문서 및 코드 예제를 살펴보거나 제품 기능에 대한 사용 방법 비디오를 볼 수 있습니다.

참고: 본 과정을 사용하시려면 데스크탑으로 접속하시기 바랍니다.
이메일 주소를 입력하시면, 본 과정에 바로 접속하실 수 있는 링크를 보내드립니다.

대화형 방식의 교육과정으로 기초 쌓기

MATLAB Onramp

MATLAB Onramp

MATLAB ® 기본빠르게 학습하기

Simulink Onramp

Simulink Onramp

Simulink ® 모델 생성, 편집 및 문제 해결 방법 학습하기

내 교육과정

대학에서 제공하는 교육과정을 포함하여 사용자가 등록했거나 수강 가능한 자기 주도형 교육과정을 볼 수 있습니다.

예제 및 문서 살펴보기

행렬과 배열, 플롯, 블록 다이어그램, 모델 기반 설계 및 기타 핵심 주제에 대한 예제를 실행하고 관련 문서를 읽어볼 수 있습니다.

documenation

입문 비디오로 시작하기

제품을 처음 사용할 때 단계별 비디오를 보시면 빠르게 시작하고 사용할 수 있습니다. 일반적인 응용 프로그램과 워크플로를 보고 새로운 제품 기능을 알아볼 수 있습니다.

MATLAB 및 Simulink 교육을 통해 기본 지식 넘어서기

Deep Learning Onramp

MATLAB에서 영상 인식을 위한 딥러닝 기법을 시작합니다.

Machine Learning Onramp

분류 문제에 대한 실용적 머신러닝 방법을 대화형 방식으로 소개합니다.

Stateflow Onramp

본 무료 튜토리얼은 Stateflow ® 에서 상태 머신을 생성하고, 편집하고 시뮬레이션하는 방법의 기본 내용을 학습합니다.

Image Processing Onramp

MATLAB에서의 실용적 영상 처리에 관한 기본 내용을 학습할 수 있습니다.

Control Design Onramp with Simulink

Simulink에서의 사용자 의견 제어 설계 기본 내용을 빠르게 시작할 수 있습니다.

Signal Processing Onramp

스펙트럼 분석을 위한 실용적인 신호 처리 방법을 대화형 방식으로 소개합니다.

Reinforcement Learning Onramp

경험으로부터 학습하는 지능형 제어기를 만들기 위한 기본 사항을 익힙니다.

Simscape Onramp

Simscape에서 이루어지는 물리적 시스템 시뮬레이션의 기본을 익힐 수 있습니다.

Optimization Onramp

문제 기반 접근법으로 MATLAB에서 최적화 문제를 푸는 기본적인 방법에 대해 알아봅니다.

Circuit Simulation Onramp

두 시간 분량의 무료 입문용 튜토리얼을 통해 Simscape에서 이루어지는 전기 회로 시뮬레이션의 기본을 익힐 수 있습니다.

Wireless Communications Onramp

90분 분량의 대화형 무료 튜토리얼을 통해 MATLAB에서의 무선 통신 링크 시뮬레이션에 대한 기본 사항을 학습할 수 있습니다.

추가 교육과정

다양한 주제에 대한 MATLAB 및 Simulink 교육과정으로 실력을 증진할 수 있습니다.

MATLAB 및 Simulink 다운로드

MATLAB

소프트웨어 액세스 옵션을 살펴보십시오.

MATLAB Online

웹 브라우저를 통해 MATLAB을 사용하십시오.

Simulink

30일 평가판을 받거나 가격 정보를 보십시오.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

[Django/장고] 파이썬으로 웹페이지 만들기 튜토리얼 - 6부

먼저 이전 튜토리얼에서 배운 __str__(self) redefinition 하여 admin페이지에 데이터가 나오도록 합니다.

admin페이지로 가서 이전 Fx 전송 튜토리얼 데이터는 정리하고 Question 하나를 추가 해 줍니다.

Choice는 Question에 외래키로 연결되어 있다.

이번에는 detail 템플릿을 완성시켜 봅시다.

polls/templates/polls/detail.html

  • 위 템플릿은 투표를 하는 기능을 넣은 템플릿입니다. form 태그를 이용합니다
  • form에서 라디오 버튼을 이용해 데이터를 선택합니다. 이 데이터는 POST request로 vote뷰에 전송됩니다.
  • forloop.counter는 for문이 얼마나 돌았는지 나타내줍니다
  • csrf_token은 장고에서 제공해주는 보안기능입니다. csrf 보안에 대해 딱히 걱정안하고 이 태그만 이용하시면 됩니다

하기 코드 이제 분석하실수 있겠죠? polls:vote는 vote view에 form 데이터를 전송하라는 의미입니다!

서버를 돌린뒤 확인하면 이런 페이지가 나옵니다.

자 이제 vote view를 구현하러 갑시다!

polls/views.py

자 form에서 우리가 submit 버튼을 누르면 POST request로 vote view에 데이터가 전송이 됩니다.

form에서 데이터를 장고에 전송할떄 key, value 형태로 전송이 됩니다.

여기서 key값은 name이 되며 value는 value 입니다.

request.POST["키 값"] 혹은 request.POST.get("키 값") 형태로 데이터를 얻어 올 수 있습니다.

위 코드는 question 모델에 Fx 전송 튜토리얼 연결된 choice 데이터에서 choice.id 값을 이용해 선택된 choice를 받아오는 코드입니다.

POST에서 데이터 받아오는게 실패하면 except 코드가 수행됩니다. detail뷰로 넘어가면서 error_message를 따로 담아서 보내네요.

except가 수행되지 않으면 else문이 수행됩니다. 즉 POST에서 원하는 데이터를 받아왔다는 얘기지요.

Django shell에서 데이터를 다루었던 방법처럼 votes 변수에 +1 을 해준뒤 save 해줍니다!

여기서 주목해야 할 점은 아래 코드입니다.

reverse 함수는 polls:results(url의 name)을 url로 거꾸로 바꿔주는 함수입니다. args에는 url에 필요한 변수를 넣어줍시다.

즉 이 코드는 results view로 웹페이지를 띄워달라는 얘기이지요!

자 이제 result view를 작성하러 갑시다

polls/views.py

polls/templates/polls/results.html

question_id를 기준으로 질문이 가지는 choice가 몇개가 투표되었는지 나타내주는 템플릿 입니다.

여기서 주목할 부분이 > 인데 >은 template에서 variable을 나태내준다고 했죠?

이 variable 뒤에 | 은 filter라는 기능인데 variable을 특정한 형태로 바꾸어주는 역할을 합니다.

pluralize 즉 복수화 이므로 숫자가 2 이상이면 choice.votes 라는 값을 s 로 바꾸어 줍니다.

choice.votes가 1인 경우 => 1 vote

choice.votes가 2이상인경우 => 2 vote s

자 서버를 가동시킨뒤 이제 완성된 polls 어플리케이션을 구동해 봅시다.

짜잔! 이제 polls 어플리케이션이 완성되었습니다. 1표를 준 광어는 vote라 표시되고 2표를 준 붕어는 votes라 표시되네요.


0 개 댓글

답장을 남겨주세요