<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>justkeepintouch 님의 블로그</title>
    <link>https://justkeepintouch.tistory.com/</link>
    <description>&amp;quot;Hello, World!
Just remeber to keep in touch!&amp;quot;</description>
    <language>ko</language>
    <pubDate>Mon, 22 Jun 2026 15:46:27 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>justkeepintouch</managingEditor>
    <image>
      <title>justkeepintouch 님의 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/7628158/attach/b438d6ab45744ff39b927596feac9eb3</url>
      <link>https://justkeepintouch.tistory.com</link>
    </image>
    <item>
      <title>나 자신으로 살아가기</title>
      <link>https://justkeepintouch.tistory.com/notice/8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Stop Scrolling&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stop Hating and Start Loving&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;책 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;트랜서핑 (불안한 생각 대신 긍정적인 생각을 선택해야하는 물리, 우주적 관점)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;넷플릭스 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소셜딜레마 (소셜 미디어가 사람에게 미치는 영향, 인공지능에 지배된 삶)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;유튜브 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도파민 중독에서 벗어나는 법 &lt;a href=&quot;https://www.youtube.com/watch?v=rc8YFSr8Ayk&quot;&gt;https://www.youtube.com/watch?v=rc8YFSr8Ayk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;불안함을 없애는 마인드 + 시간은 공평하지 않다 &lt;a href=&quot;https://youtu.be/bqSL86SrAcU?si=cGMd1sWsvMXxWVZr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/bqSL86SrAcU?si=cGMd1sWsvMXxWVZr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/notice/8</guid>
      <pubDate>Fri, 19 Jun 2026 10:24:37 +0900</pubDate>
    </item>
    <item>
      <title>네이버 영화 리뷰 감성 분류하기(TF-IDF, TF), 텍스트 토크나이징, 벡터화</title>
      <link>https://justkeepintouch.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%84%A4%EC%9D%B4%EB%B2%84-%EC%98%81%ED%99%94-%EB%A6%AC%EB%B7%B0-%EC%9D%B4%EC%A7%84-%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0TF-IDF-TF-%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%86%A0%ED%81%AC%EB%82%98%EC%9D%B4%EC%A7%95-%EB%B2%A1%ED%84%B0%ED%99%94</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;두두둥!&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 시간에는 &quot;네이버 영화 리뷰&quot;를 가지고 긍정/부정 분류하는 딥러닝 모델을 만들어 보자!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;개인적으론 이번 실습 실제 영화 리뷰 데이터를 활용하여 하는 작업이다 보니까 젤 재밌었다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우선 데이터는 크게 2가지로 나뉜다&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;정형 데이터(숫자)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;비정형 데이터(이미지, 문자, 음성)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;숫자 데이터의 경우 바로 MLP 모델 input에 넣을 수 있지만, 비정형 데이터의 경우 컴퓨터가 해당 데이터를 읽을 수 없기 때문에 &lt;u&gt;컴퓨터가 읽을 수 있는 숫자로 바꿔주는 &lt;b&gt;벡터화 작업&lt;/b&gt;&lt;/u&gt;이 필요하다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이미지 데이터 전처리&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1029&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mG52K/dJMcabxNNNO/vSYEWPqGbm3PdYVdUmMi5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mG52K/dJMcabxNNNO/vSYEWPqGbm3PdYVdUmMi5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mG52K/dJMcabxNNNO/vSYEWPqGbm3PdYVdUmMi5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmG52K%2FdJMcabxNNNO%2FvSYEWPqGbm3PdYVdUmMi5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2816&quot; height=&quot;1029&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1029&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이미지 데이터의 경우 이미 픽셀이라는 숫자로 이루어져 벡터화 작업 없이&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;u&gt;&lt;b&gt;MLP input에 넣기 위한 1D Flatten&lt;/b&gt;&lt;/u&gt;&lt;/span&gt; 작업만을 진행하면 되지만,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;텍스트 데이터 전처리&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1015&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnoCun/dJMcabYWz5d/ABk0FkVadk2Hn0jgqKMhVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnoCun/dJMcabYWz5d/ABk0FkVadk2Hn0jgqKMhVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnoCun/dJMcabYWz5d/ABk0FkVadk2Hn0jgqKMhVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnoCun%2FdJMcabYWz5d%2FABk0FkVadk2Hn0jgqKMhVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2816&quot; height=&quot;1015&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1015&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;text 데이터는 &lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;b&gt;문자열 -&amp;gt; 토크나이징(쪼개기) -&amp;gt; 벡터(숫자로 변경) -&amp;gt; 벡터 단어사전 만들기 &lt;/b&gt;&lt;/span&gt;하는 작업이 필요하다&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;토큰화를 어떻게 하는 것이 좋을까?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;한국어는 어근 뒤에 어미, 조사가 붙어 하나의 단어처럼 쓰이는 교착어 형태이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ex) 성호가 자연어 처리 수업을 한다 -&amp;gt; &lt;span style=&quot;color: #d4d4d4; background-color: #282a2c; letter-spacing: 0px;&quot;&gt;자립(성호, 자연어, 처리, 수업) + 의존(-가, -을, 하-, -ㄴ다)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 크게 자립 형태소와, 의존 형태소로 나눠줄 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;만약 이걸 형태소 단위가 아닌, word 단위로 자른다고 생각해보자&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt; ex) 성호가 자연어 처리 수업을 한다 -&amp;gt; &lt;span style=&quot;background-color: #282a2c; color: #d4d4d4; text-align: start;&quot;&gt;성호가, 자연어, 처리, 수업을, 한다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 잘라질 것이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그렇다면 &lt;b&gt;&quot;수업을, 수업이, 수업에서, 수업은&quot;&lt;/b&gt; 전부 다른 단어로 취급 될 것이며, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;전부 다르게 벡터화 시킨다면 &lt;span style=&quot;color: #ef5369;&quot;&gt;저장 메모리가 폭발&lt;/span&gt;할 것이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;항상 기억하자. 우리의 자원은 한정적이라는 것을.. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNz7CH/dJMcacXNYsj/ImpVjz76SNAPXRaETOnlBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNz7CH/dJMcacXNYsj/ImpVjz76SNAPXRaETOnlBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNz7CH/dJMcacXNYsj/ImpVjz76SNAPXRaETOnlBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNz7CH%2FdJMcacXNYsj%2FImpVjz76SNAPXRaETOnlBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;978&quot; height=&quot;51&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;형태소 단위로 토큰화를 시켜주기 위해 Konlpy라는 라이브러리를 설치해 주자 :) &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caiSks/dJMcaf71kgA/z30IXH04b4wL3UB2a1SkvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caiSks/dJMcaf71kgA/z30IXH04b4wL3UB2a1SkvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caiSks/dJMcaf71kgA/z30IXH04b4wL3UB2a1SkvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaiSks%2FdJMcaf71kgA%2Fz30IXH04b4wL3UB2a1SkvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;837&quot; height=&quot;543&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;영화 데이터를 보면 20만개의 데이터가 긍정 1, 부정 0 으로 labeling 되어 있는 것을 확인 할 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbYcNj/dJMcabdtaEx/JzAKk3LZqPmQ75wjE3nM7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbYcNj/dJMcabdtaEx/JzAKk3LZqPmQ75wjE3nM7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbYcNj/dJMcabdtaEx/JzAKk3LZqPmQ75wjE3nM7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbYcNj%2FdJMcabdtaEx%2FJzAKk3LZqPmQ75wjE3nM7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;778&quot; height=&quot;324&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;작업 시간 단축을 위해 2만개의 데이터로만 진행해주자 !&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCvdjB/dJMcabYWBa8/aS2Qlm3xpRRUrqYBvuxn2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCvdjB/dJMcabYWBa8/aS2Qlm3xpRRUrqYBvuxn2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCvdjB/dJMcabYWBa8/aS2Qlm3xpRRUrqYBvuxn2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCvdjB%2FdJMcabYWBa8%2FaS2Qlm3xpRRUrqYBvuxn2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;726&quot; height=&quot;171&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;cuda GPU를 통해 모델 학습ㅇ르 더 빨리 하기 위해 device를 설정해주고,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;konlpy에서 Okt라는 형태소 단위로 토큰화를 하는 인스턴스를 불러왔다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;형태소 단위의 토큰화&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kXWnq/dJMcajoZ6ry/fVJbCiiD6ppnSKMnPXMiJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kXWnq/dJMcajoZ6ry/fVJbCiiD6ppnSKMnPXMiJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kXWnq/dJMcajoZ6ry/fVJbCiiD6ppnSKMnPXMiJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkXWnq%2FdJMcajoZ6ry%2FfVJbCiiD6ppnSKMnPXMiJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;645&quot; height=&quot;127&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;127&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;text라는 변수에 문장을 받아, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;text가 str(문자열)이 아니거나, &quot;or not text.strip()&quot; 공백만 있으면&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;[] 처럼 빈 리스트로 반환해주고,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그게 아니면(정상적으로 통과되면), text를 morphs(형태소) 단위로 토큰화 해주자&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK8nYN/dJMcabLrqB8/ThpU9DWNZADKIZQlScKuNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK8nYN/dJMcabLrqB8/ThpU9DWNZADKIZQlScKuNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK8nYN/dJMcabLrqB8/ThpU9DWNZADKIZQlScKuNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK8nYN%2FdJMcabLrqB8%2FThpU9DWNZADKIZQlScKuNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;468&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;문자열을 주어졌을때 이런식으로 토큰화 된 것을 확인하였다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재 morphs는 단어의 형태를 유지하면서 토큰화 하기 때문에, &quot;했다, 한다, 함, 했음&quot;으로 토큰화가 되었지만,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; morphs에 &lt;span style=&quot;background-color: #282a2c; color: #82b76c; text-align: start;&quot;&gt;&amp;nbsp;stem = True&lt;/span&gt; 라는 파라미터를 넣어주면&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgFL3u/dJMcageQbKy/I0ktQlDNkXMM4OkJOQuR8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgFL3u/dJMcageQbKy/I0ktQlDNkXMM4OkJOQuR8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgFL3u/dJMcageQbKy/I0ktQlDNkXMM4OkJOQuR8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgFL3u%2FdJMcageQbKy%2FI0ktQlDNkXMM4OkJOQuR8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;636&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&quot;하다&quot;라고 통일되게 토큰화 된 것을 확인할 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NQqGg/dJMcaf71kGg/KOYKOvMOWAKJjBL7OXvLD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NQqGg/dJMcaf71kGg/KOYKOvMOWAKJjBL7OXvLD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NQqGg/dJMcaf71kGg/KOYKOvMOWAKJjBL7OXvLD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNQqGg%2FdJMcaf71kGg%2FKOYKOvMOWAKJjBL7OXvLD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;495&quot; height=&quot;71&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;원본 데이터 'document' 에 대해서 preprocess 함수를 사용하여 모든 데이터를 토큰화 해주고 'tokens'라는 칼럼에 저장한다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 토큰화 한 데이터를 ' '(공백 문자)를 기준으로 합쳐준다&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-&amp;gt; 기껏 토큰화 시켰는데 왜 다시 join해 줄까?&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우리는 뒤에서 &lt;b&gt;TF, TF-IDF 벡터화&lt;/b&gt;를 해줄건데 이 라이브러리의 경우 &lt;b&gt;형태소 단위가 아니라, 공백을 기준으로 잘라&lt;/b&gt; 버린다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러니 &quot;형태소 토큰화 유지 + 벡터화&quot;를 하기 위해 join해 주는 것이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1549&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs4DCc/dJMcahY5Wfg/D3jhAeF6Cfn1kirHaplkF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs4DCc/dJMcahY5Wfg/D3jhAeF6Cfn1kirHaplkF1/img.png&quot; data-alt=&quot;토큰화 된 'tokens'와 그걸 다시 합친 'joined'&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs4DCc/dJMcahY5Wfg/D3jhAeF6Cfn1kirHaplkF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs4DCc%2FdJMcahY5Wfg%2FD3jhAeF6Cfn1kirHaplkF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1549&quot; height=&quot;218&quot; data-origin-width=&quot;1549&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;토큰화 된 'tokens'와 그걸 다시 합친 'joined'&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt; TF(Term Frequency, 단어의 빈도)&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;한 문서 내에서 특정 단어가 얼마나 자주 등장하는지&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;278&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5V9MV/dJMcadWHD9Q/oU8d4yK7Jbsz6QpxQue0qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5V9MV/dJMcadWHD9Q/oU8d4yK7Jbsz6QpxQue0qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5V9MV/dJMcadWHD9Q/oU8d4yK7Jbsz6QpxQue0qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5V9MV%2FdJMcadWHD9Q%2FoU8d4yK7Jbsz6QpxQue0qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;278&quot; height=&quot;123&quot; data-origin-width=&quot;278&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;261&quot; data-start=&quot;180&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;197&quot; data-start=&quot;180&quot; data-section-id=&quot;15qpphw&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;t&lt;/span&gt;: 단어(term)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;219&quot; data-start=&quot;198&quot; data-section-id=&quot;1kva71&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;d: 문서(document)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;261&quot; data-start=&quot;220&quot; data-section-id=&quot;1in3k03&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;f(t,d): 문서 &lt;span aria-hidden=&quot;true&quot;&gt;d&lt;/span&gt;에서 단어 &lt;span aria-hidden=&quot;true&quot;&gt;t&lt;/span&gt;가 등장한 횟수&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;IDF(Inverse Document&amp;nbsp;Frequency)&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;전체 문서 집합에서 특정 단어가 얼마나 희귀한지&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAfUwi/dJMcafAfs0S/Q9FF41aoQ6EG6jurkt4aWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAfUwi/dJMcafAfs0S/Q9FF41aoQ6EG6jurkt4aWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAfUwi/dJMcafAfs0S/Q9FF41aoQ6EG6jurkt4aWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAfUwi%2FdJMcafAfs0S%2FQ9FF41aoQ6EG6jurkt4aWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;252&quot; height=&quot;111&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;df(t) : 단어 t를 포함하는 문서 수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;N : 전체 문서 수&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;TF - IDF(Term Frequency - Inverse Document Frequency)&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 문서 내에서는 자주 나오고(TF&amp;uarr;),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;전체 문서에서는 드물게 나오는(IDF&amp;uarr;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단어에 높은 점수를 부여&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;313&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oC7j8/dJMcabR5JZ3/NAoNnStobu3yyfbSyMkv9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oC7j8/dJMcabR5JZ3/NAoNnStobu3yyfbSyMkv9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oC7j8/dJMcabR5JZ3/NAoNnStobu3yyfbSyMkv9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoC7j8%2FdJMcabR5JZ3%2FNAoNnStobu3yyfbSyMkv9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;313&quot; height=&quot;114&quot; data-origin-width=&quot;313&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;tf(t, d) : 문서 d안에서 단어 t가 등장한 횟수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;df(t) : 단어 t를 포함하는 문서 수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;N : 전체 문서 수&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;847&quot; data-origin-height=&quot;52&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8941S/dJMcajvRQUB/7eqZFxsJ0PvKA7WE9Nm9J1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8941S/dJMcajvRQUB/7eqZFxsJ0PvKA7WE9Nm9J1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8941S/dJMcajvRQUB/7eqZFxsJ0PvKA7WE9Nm9J1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8941S%2FdJMcajvRQUB%2F7eqZFxsJ0PvKA7WE9Nm9J1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;847&quot; height=&quot;52&quot; data-origin-width=&quot;847&quot; data-origin-height=&quot;52&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;VOCAB_SIZE = 5000 : 벡터 단어를 담을 단어장의 최대 크기를 5000개라고 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;min_df = 3 : 최소 3번 이상 언급된 것만 벡터 단어사전에 남도록&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ngram_range=(1,2) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&quot;재미 없다&quot;,&amp;nbsp; &quot;안 좋다&quot; 와 같이 단어가 떨어져 있음으로 인해 단어가 외곡 되거나, 의미가 안 잡히는 문제를 없애기 위해&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2단어를 합쳐서 벡터화 시킴!&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;('기존 형태소 토큰한 단어&quot; + &quot;2개를 합친 n-gram&quot;&amp;nbsp; 모두 벡터화 시키기)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예시 (문장: &quot;이 영화 정말 재미 없다&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;table style=&quot;background-color: #282a2c; color: #e3e3e3; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #474747;&quot;&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;unigram&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이,&amp;nbsp;영화,&amp;nbsp;정말,&amp;nbsp;재미,&amp;nbsp;없다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;bigram&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 영화,&amp;nbsp;영화 정말,&amp;nbsp;정말 재미,&amp;nbsp;&lt;b&gt;재미 없다&lt;/b&gt;&amp;nbsp;&amp;larr; 부정 의미 살아남&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #474747;&quot;&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;trigram&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 영화 정말,&amp;nbsp;영화 정말 재미,&amp;nbsp;정말 재미 없다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; VOCAB_SIZE = 5000개를 어떻게 맞출 것인가?&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-&amp;gt; 가장 많이 언급된 단어를 갖고 상위 5000개만을 남기기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nxOwG/dJMb99UiYfM/htXijx99tJcJDPufMRSri1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nxOwG/dJMb99UiYfM/htXijx99tJcJDPufMRSri1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nxOwG/dJMb99UiYfM/htXijx99tJcJDPufMRSri1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnxOwG%2FdJMb99UiYfM%2FhtXijx99tJcJDPufMRSri1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1108&quot; height=&quot;792&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;TF : CountVectorize(**COMMON_KW)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;TF-IDF : TfidfVectorize( **COMMON_KW )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;둘다 위에서 만든 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;**COMMON_KW(고정 최대 크기 지정 + ngram)을&amp;nbsp;적용하고 있음&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;학습에선 fit_transform(X_train_text) : 16000개의 리뷰 데이터를 흝으면서 가장 많이 나온 단어 5000개 선정 및 벡터화 + TF or TF-IDF&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;테스트에선 transform(X_test_text) :&amp;nbsp; 새로운 리뷰 데이터를 통해서 넣어서 TF or TF-IDF&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;X shape : 16000(train data 리뷰 문서 개수) X 5000(5000개의 벡터 사전)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;가장 많이 언급된 5000개 단어 사전&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYR0L3/dJMcagZ91no/x07dsLFcvcfnLnDegFDISK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYR0L3/dJMcagZ91no/x07dsLFcvcfnLnDegFDISK/img.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;1058&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;43.57&quot; style=&quot;width: 43.0677%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYR0L3/dJMcagZ91no/x07dsLFcvcfnLnDegFDISK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYR0L3%2FdJMcagZ91no%2Fx07dsLFcvcfnLnDegFDISK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;1058&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzalbu/dJMcac4yyrd/1Y2gw4M18kfkDARufL3x9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzalbu/dJMcac4yyrd/1Y2gw4M18kfkDARufL3x9k/img.png&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;1077&quot; data-is-animation=&quot;false&quot; style=&quot;width: 55.7695%;&quot; data-widthpercent=&quot;56.43&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzalbu/dJMcac4yyrd/1Y2gw4M18kfkDARufL3x9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzalbu%2FdJMcac4yyrd%2F1Y2gw4M18kfkDARufL3x9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;464&quot; height=&quot;1077&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;만들어진 5000개의 단어사전&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사전을 보면 반복적으로 언급되는 텍스트가&amp;nbsp; 있는 것을 볼 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;첫번째 리뷰 데이터에 대한 TF, IDF, TF-IDF&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbKhKs/dJMcaiqbfgR/PnpSMB1CldlGeK3ogmPu51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbKhKs/dJMcaiqbfgR/PnpSMB1CldlGeK3ogmPu51/img.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;1120&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.4388%; margin-right: 10px;&quot; data-widthpercent=&quot;49.01&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbKhKs/dJMcaiqbfgR/PnpSMB1CldlGeK3ogmPu51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbKhKs%2FdJMcaiqbfgR%2FPnpSMB1CldlGeK3ogmPu51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;878&quot; height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PSpl9/dJMcaijqiI6/CsUjqoBotYNKCqErHwqkHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PSpl9/dJMcaijqiI6/CsUjqoBotYNKCqErHwqkHK/img.png&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;1074&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.3984%;&quot; data-widthpercent=&quot;50.99&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PSpl9/dJMcaijqiI6/CsUjqoBotYNKCqErHwqkHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPSpl9%2FdJMcaijqiI6%2FCsUjqoBotYNKCqErHwqkHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;876&quot; height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;첫번째 리뷰 문서에서 농구라는 단어가 한 번 언급되었단 것을 볼 수 있다. 회소성에 따른 TF-IDF 값이 높게 설정 되었다는 것을 알 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MLP 학습 및&amp;nbsp; 평가&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2rDxM/dJMcaiqbflT/ddebALh2pldVtPfHR6PZDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2rDxM/dJMcaiqbflT/ddebALh2pldVtPfHR6PZDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2rDxM/dJMcaiqbflT/ddebALh2pldVtPfHR6PZDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2rDxM%2FdJMcaiqbflT%2FddebALh2pldVtPfHR6PZDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;909&quot; height=&quot;490&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MLP 기본 구조를 다른 것과 같이 짜주되, input_dim의 사이즈는 벡터 사전의 사이즈 5000이다(리뷰 한 문서당 들어갈 x의 길이)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;CrossEntropy를 사용하여 &lt;/span&gt;긍정 리뷰(1), 부정 리뷰(0)을 분류하고 2개의 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;num_classes에서 logits 값을 출력하도록 설정해준다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bblLis/dJMcaasbLgg/o9VEyQddfOQ27FMlRIHrI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bblLis/dJMcaasbLgg/o9VEyQddfOQ27FMlRIHrI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bblLis/dJMcaasbLgg/o9VEyQddfOQ27FMlRIHrI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbblLis%2FdJMcaasbLgg%2Fo9VEyQddfOQ27FMlRIHrI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;608&quot; height=&quot;116&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;y 데이터의 경우 클래스의 인덱스를 나타내기 때문에 long 타입으로 설정해 준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lon3i/dJMcadPS5gw/LZQnhroxF3u11kU4axkO71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lon3i/dJMcadPS5gw/LZQnhroxF3u11kU4axkO71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lon3i/dJMcadPS5gw/LZQnhroxF3u11kU4axkO71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLon3i%2FdJMcadPS5gw%2FLZQnhroxF3u11kU4axkO71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;754&quot; height=&quot;434&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;model 부분을 .to(device)를 통해서 GPU로 가속화 시켜주고, 배치로 묶은 x와 y값 또한 .to(device)를 해준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGr6gN/dJMcabdtcJB/3LtlKpZz1KfaaEScbUUsvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGr6gN/dJMcabdtcJB/3LtlKpZz1KfaaEScbUUsvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGr6gN/dJMcabdtcJB/3LtlKpZz1KfaaEScbUUsvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGr6gN%2FdJMcabdtcJB%2F3LtlKpZz1KfaaEScbUUsvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;282&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;torch.no_grad를 제외하고는 학습과 비슷하다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/17mDo/dJMcacDyIkW/ecfjdrS002BTQsQiktzz50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/17mDo/dJMcacDyIkW/ecfjdrS002BTQsQiktzz50/img.png&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;826&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.1987%; margin-right: 10px;&quot; data-widthpercent=&quot;45.73&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/17mDo/dJMcacDyIkW/ecfjdrS002BTQsQiktzz50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F17mDo%2FdJMcacDyIkW%2FecfjdrS002BTQsQiktzz50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;593&quot; height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WmjTW/dJMcahrkcRa/YUgU4ZanreWzo4nYjTiR6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WmjTW/dJMcahrkcRa/YUgU4ZanreWzo4nYjTiR6K/img.png&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;304&quot; data-is-animation=&quot;false&quot; style=&quot;width: 53.6386%;&quot; data-widthpercent=&quot;54.27&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WmjTW/dJMcahrkcRa/YUgU4ZanreWzo4nYjTiR6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWmjTW%2FdJMcahrkcRa%2FYUgU4ZanreWzo4nYjTiR6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;259&quot; height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;신기하게도 TF에서 더 좋은 성능을 보였다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;리뷰 같은 경우에는 &quot;재밌다. 추천한다&quot;와 같이 비슷한 단어를 많은 사람들이 쓰게 되는데 &lt;u&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;TF-IDF가 중복 추천된 단어의 가중치를 낮췄기 때문에&lt;/span&gt; &lt;/u&gt;이러한 결과가 나온 것 같다고 추측된다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 ngram을 통해서 단어의 의미를 합치긴 했지만, 원본 형태소 또한 학습하는 데 사용이 되었으므로,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;u&gt;&quot;재미 없다&quot; 와 &quot;재미&quot; 가&amp;nbsp; 동시에 학습&lt;/u&gt;&lt;/span&gt;이 되어 의미 충돌이 발생했을&amp;nbsp; 가능성도 있다&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;032&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/axz_keditor/emoticon/niniz/large/032.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/axz_keditor/emoticon/niniz/large/032.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>네이버 영화 리뷰</category>
      <category>딥러닝</category>
      <category>벡터</category>
      <category>벡터 사전</category>
      <category>분류</category>
      <category>인공지능</category>
      <category>토크나이징</category>
      <category>토큰</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/7</guid>
      <comments>https://justkeepintouch.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%84%A4%EC%9D%B4%EB%B2%84-%EC%98%81%ED%99%94-%EB%A6%AC%EB%B7%B0-%EC%9D%B4%EC%A7%84-%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0TF-IDF-TF-%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%86%A0%ED%81%AC%EB%82%98%EC%9D%B4%EC%A7%95-%EB%B2%A1%ED%84%B0%ED%99%94#entry7comment</comments>
      <pubDate>Thu, 18 Jun 2026 11:12:08 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝  CIFAR-10 비정형 이미지 데이터 분류하기(CrossentropyLoss)</title>
      <link>https://justkeepintouch.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-CIFAR-10-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0CrossentropyLoss</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt; 자동차, 새, 고양이, 사슴 등 10가지 종류의 컬러 이미지 데이터(CIFAR-10) 분류하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;이미지 크기 : 32 x 32 x 3(RGB 3채널)&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 정형 데이터가 아닌, 비정형 데이터(이미지 데이터)를 가지고 멀티 클래스를 분류하는 작업을 할 것이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비정형 데이터를 MLP에 학습 시키기 위해선 아래 작업이 우선시 되어야 한다!&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;이미지 불러와서 MLP의 입력 형태로 바꿔주기&lt;/li&gt;
&lt;li&gt;정규화 해주기&lt;/li&gt;
&lt;li&gt;불러온 이미지 벡터 -&amp;gt; 1차원으로 Flatten 시키기&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;데이터 불러오기&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kMq2k/dJMcabkjqz0/T37OkE7BqbJNQL2S7k46Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kMq2k/dJMcabkjqz0/T37OkE7BqbJNQL2S7k46Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kMq2k/dJMcabkjqz0/T37OkE7BqbJNQL2S7k46Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkMq2k%2FdJMcabkjqz0%2FT37OkE7BqbJNQL2S7k46Q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;941&quot; height=&quot;489&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Compose : 여러개를 하나로 묶어서 순차대로 실행하도록 하는 객체&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ToTensor : 파이토치에서 처리하는 이미지 형식으로 만들어 주기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Normalize : 평균 0이 되도록 정규화 실행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(Lamda&amp;nbsp; x : x.view -1) : 1차원으로 데이터 평탄화 시키기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;왜 쉬운 nn.flatten()을 사용하지 않았을까?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt; nn.flatten은 모델의 구성 요소로 넣어서 학습시마다 평탄화 작업을 실행해야 하는데, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위의 compose 코드는 데이터를 불러올 때 전처리 시킴으로써 반복적인 작업을 없앰&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt; train_cifar_dataset[0] : (이미지 데이터, 정답 라벨)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt; train_cifar_dataset[0][0] : 이미지 데이터 그 자체&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt; train_cifar_dataset[0][0]&amp;nbsp; 크기 : [3072] ( 3 *32 * 32 를 하여 1D로 평탄화 한 후 shape)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;데이터 사이즈 확인하기&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lmvvp/dJMcadh6IHt/A0rMXbJrJYsQTSB5ZbOxKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lmvvp/dJMcadh6IHt/A0rMXbJrJYsQTSB5ZbOxKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lmvvp/dJMcadh6IHt/A0rMXbJrJYsQTSB5ZbOxKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLmvvp%2FdJMcadh6IHt%2FA0rMXbJrJYsQTSB5ZbOxKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;446&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; train_cifar_dataset[0][0]&lt;/span&gt;&lt;/b&gt;은 &lt;span style=&quot;text-align: start;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;train_cifar_dataset.__getitem__(0)[0]&lt;/span&gt;&lt;/b&gt; 이랑 같은 결과를 나타낸다&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;train_cifar_dataset[0] -&amp;gt; (이미지, 라벨) 튜플 반환&lt;/li&gt;
&lt;li&gt;train_cifar_dataset.__getitem__(0) -&amp;gt; (이미지, 라벨) 튜플 반환&lt;/li&gt;
&lt;li&gt;train_cifar_dataset.__getitem__(0)[0]&amp;nbsp;-&amp;gt;&amp;nbsp;이미지&amp;nbsp;데이터&amp;nbsp;반환&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 이미지 데이터에 대해 [3072]의 크기르 갖고 내부에 3072개의 픽셀값을 이루고 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 input 노드는 3072개가 필요하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;데이터 matplotlib 구조에 맞게 시각화 하기&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;1035&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn5Jl9/dJMcadI3EFP/YR2AvjSOGCiIe4WLcCtaA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn5Jl9/dJMcadI3EFP/YR2AvjSOGCiIe4WLcCtaA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn5Jl9/dJMcadI3EFP/YR2AvjSOGCiIe4WLcCtaA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn5Jl9%2FdJMcadI3EFP%2FYR2AvjSOGCiIe4WLcCtaA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;666&quot; height=&quot;1035&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;1035&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 코드는 이미지 시각화를 위해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1. pythorch 이미지 (채널, 가로, 세로)matplotlib의 input 데이터(세로, 가로, 채널)로 transpose 실행&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2. 이미지 데이터 * 표준화 + 평균 실행&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;하여 시각화를 하였다&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;MLP 구조 설계하기&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccLanz/dJMb99NsNt8/4bJFRa7p0Nux77EdaRi50K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccLanz/dJMb99NsNt8/4bJFRa7p0Nux77EdaRi50K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccLanz/dJMb99NsNt8/4bJFRa7p0Nux77EdaRi50K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccLanz%2FdJMb99NsNt8%2F4bJFRa7p0Nux77EdaRi50K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;898&quot; height=&quot;476&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;MLP에 들아가는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;input_size : (채널 *가로*세로 = 3*32*32 = 3072)이다&lt;/li&gt;
&lt;li&gt;input.shape : (32, 3072) # 배치, 특징 수&lt;/li&gt;
&lt;li&gt;output_size&amp;nbsp; : 10개에 데이터를 분류하기 때문에 output 노드의 개수는 10개이다&lt;/li&gt;
&lt;li&gt;output.shape : (32, 10) # 배치, 로짓 수&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;학습하기&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwuayJ/dJMcajoX40M/kBQYMIB7iO9K0A7kKpfK01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwuayJ/dJMcajoX40M/kBQYMIB7iO9K0A7kKpfK01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwuayJ/dJMcajoX40M/kBQYMIB7iO9K0A7kKpfK01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwuayJ%2FdJMcajoX40M%2FkBQYMIB7iO9K0A7kKpfK01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1006&quot; height=&quot;520&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;model.to(device) : 모델의 모든 가중치(Weights)를 gpu로 전달&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;loss function으로 CrossEntropy를 사용&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Data_loader 배치마다 새로운 텐서를 CPU에 생성하므로, &lt;br /&gt;todevice 호출을 통해 GPU로 이동시켜 모델과 동일한 장치에서 연산이 이뤄지게 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;평가하기&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GXP4k/dJMcahx1R9e/WkLQ81sDQYlo1ojtOlkIgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GXP4k/dJMcahx1R9e/WkLQ81sDQYlo1ojtOlkIgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GXP4k/dJMcahx1R9e/WkLQ81sDQYlo1ojtOlkIgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGXP4k%2FdJMcahx1R9e%2FWkLQ81sDQYlo1ojtOlkIgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1034&quot; height=&quot;310&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;torch.no_grad() : 평가할 땐 오류 역전파 필요 없으니 기울기 계산 끄&lt;/li&gt;
&lt;li&gt;images.to(device), labels.to(device) : 매 반복문 마다 cpu -&amp;gt; gpu로 데이터를 복사하기&lt;/li&gt;
&lt;li&gt;torch.max(outputs.data, 1) : loss function으로 CrossEntropy를 사용하였기 때문에 &lt;br /&gt;출력은 노드수(10개) 중에 &lt;u&gt;&lt;b&gt;가장 큰 로짓값을 매 bach마다 저장&lt;/b&gt;&lt;/u&gt;해주기&lt;br /&gt;(outputs.data -&amp;gt; output으로 변경해도 문제 없음)&lt;/li&gt;
&lt;li&gt;batch내 예측값과 labels값이 동일한 값만(잘 예측한 값만) correct 변수에 더해주기&lt;br /&gt;(32 + 32 + ... 을 하여 최종적으로 테스트 데이터 개수(1000)만큼 )&lt;/li&gt;
&lt;li&gt;labels.size(0) : 모든 이미지의 정답이 담긴 1차원 텐서의 크기 32&lt;/li&gt;
&lt;li&gt;ouputs : [32, 10]&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;학습 디바이스 고르기 CPU vs GPU&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;1136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVKWJM/dJMcadh6T7x/dAep87XRUmhpBkhCTcTP10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVKWJM/dJMcadh6T7x/dAep87XRUmhpBkhCTcTP10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVKWJM/dJMcadh6T7x/dAep87XRUmhpBkhCTcTP10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVKWJM%2FdJMcadh6T7x%2FdAep87XRUmhpBkhCTcTP10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1128&quot; height=&quot;1136&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;1136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cpu와 cuda중 어떤것을 사용할 것인지 인자로 전달&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;device = torch.device(&quot;cuda&quot; if torch.cuda.is_available() else &quot;cpu&quot;) :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cuda가 있으면 cuda로 아니면 cpu로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습, 평가 둘 다&amp;nbsp; 동일 디바이스 활용!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;학습할 때&lt;/b&gt;: 데이터 &amp;rarr; GPU, 모델 &amp;rarr; GPU&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가할 때&lt;/b&gt;: 데이터 &amp;rarr; GPU, 모델 &amp;rarr; GPU (모델이 GPU에 있으니까 데이터도 같이 GPU에 있음)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>crossEntropy</category>
      <category>cuda</category>
      <category>딥러닝</category>
      <category>분류</category>
      <category>인공지능</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/6</guid>
      <comments>https://justkeepintouch.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-CIFAR-10-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0CrossentropyLoss#entry6comment</comments>
      <pubDate>Mon, 15 Jun 2026 19:00:05 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 iris 데이터 분류하기 pythorch (BCEWithLogitsLoss vs CrossEntropyLoss 차이)</title>
      <link>https://justkeepintouch.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-iris-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0-pythorch-BCEWithLogitsLoss-vs-CrossEntropyLoss-%EC%B0%A8%EC%9D%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;똑같은 irsi 데이터를 갖고 서로 다른 loss를 사용하여 분류하고 성능 비교를 해보자!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;BCEWithLogitsLoss :&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이진 분류에 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;output node 개수 : 1개&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;loss 내부적으로 sigmoid 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;input 데이터 target y : 2차원 [n,1] 형태 + float(&amp;nbsp;dtype )&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/560m1/dJMb997NJJM/eAvxzV725UpmyCZklMfoQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/560m1/dJMb997NJJM/eAvxzV725UpmyCZklMfoQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/560m1/dJMb997NJJM/eAvxzV725UpmyCZklMfoQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F560m1%2FdJMb997NJJM%2FeAvxzV725UpmyCZklMfoQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;41&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;CrossEntropyLoss&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이진 분류 ~ 다중 분류에 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;output node 개수 : class 개수만큼&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;loss 내부적으로 softmax 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;input 데이터 target y : 1차원 [n] 형태 + long( dtype )&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bni1CJ/dJMcafUwyTb/uiyKIlCHW6mXJYqKKukxJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bni1CJ/dJMcafUwyTb/uiyKIlCHW6mXJYqKKukxJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bni1CJ/dJMcafUwyTb/uiyKIlCHW6mXJYqKKukxJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbni1CJ%2FdJMcafUwyTb%2FuiyKIlCHW6mXJYqKKukxJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;661&quot; height=&quot;33&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;공통 사항 (데이터 불러오기 + train, test 나누기)&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우선 iris 데이터를 불러와서 train_test_split를 해준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(BCEWithLogitsLoss, CrossEntropyLoss 둘 다&amp;nbsp; 동일사항)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rk36V/dJMcabdqJpr/sB3cauYBKbic2wSSj9ONX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rk36V/dJMcabdqJpr/sB3cauYBKbic2wSSj9ONX0/img.png&quot; data-alt=&quot;Setosa(0)와 Versicolor(1) 중 어떤 품종의 꽃인지 분류하는 문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rk36V/dJMcabdqJpr/sB3cauYBKbic2wSSj9ONX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frk36V%2FdJMcabdqJpr%2FsB3cauYBKbic2wSSj9ONX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;867&quot; height=&quot;571&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Setosa(0)와 Versicolor(1) 중 어떤 품종의 꽃인지 분류하는 문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coD0iO/dJMcadCgrcy/fWKhOtIGHkRoSAXbGKo9k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coD0iO/dJMcadCgrcy/fWKhOtIGHkRoSAXbGKo9k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coD0iO/dJMcadCgrcy/fWKhOtIGHkRoSAXbGKo9k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoD0iO%2FdJMcadCgrcy%2FfWKhOtIGHkRoSAXbGKo9k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;851&quot; height=&quot;858&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;299&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;데이터 사이즈 (150, 4)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;train_test_split : 70% : 30% 비율로 데이터를 나눠주었다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;BCEWithLogitsLoss 사용한 MLP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;1) Y값 unsqueeze를 통한 차원 늘리기&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4VZaC/dJMcaayUCVo/bwIcT2FtUF3mJUNwK9rLh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4VZaC/dJMcaayUCVo/bwIcT2FtUF3mJUNwK9rLh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4VZaC/dJMcaayUCVo/bwIcT2FtUF3mJUNwK9rLh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4VZaC%2FdJMcaayUCVo%2FbwIcT2FtUF3mJUNwK9rLh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;395&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;코드를 보면 y 데이터에 한해서 'unsqueeze(1) : 차원 늘리기' 한 것을 볼 수 있다&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;BCEWithLogitsLoss 가 2차원 배열의 logits를 받고 loss를 계산하기 때문에,&lt;br /&gt;&lt;/span&gt;기존 (105,), (45,) -&amp;gt; (105,1), (45,1)로 변경해 주는 작업이 필요하다&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;2) output_size : 1개로 설정하기&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;448&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MyPGt/dJMcahrhsmR/ZObEGqiXlkSOIAdXNZY08k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MyPGt/dJMcahrhsmR/ZObEGqiXlkSOIAdXNZY08k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MyPGt/dJMcahrhsmR/ZObEGqiXlkSOIAdXNZY08k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMyPGt%2FdJMcahrhsmR%2FZObEGqiXlkSOIAdXNZY08k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;448&quot; height=&quot;320&quot; data-origin-width=&quot;448&quot; data-origin-height=&quot;320&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3개의 layer로 이루어진 간단한 MLP 구조로 설계해 주었다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;여기서 중요한 부분은 &lt;u&gt;&lt;b&gt;output size 개수가 1개&lt;/b&gt;&lt;/u&gt; 인 점이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2Class로 분류하는데 왜 output node는 1개일까?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;BCEWithlogitsLoss는 이진 분류에서 sigmoid를 취하여 &lt;br /&gt;확률이 0.5 이상이면 -&amp;gt;1 / 0.5 미만이면 -&amp;gt; 0 으로 분류한다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;따라서 2개가 아닌,&lt;b&gt;&lt;u&gt; 1개의 노드만을 사용하여 불필요한 비선형 작업을 줄였다&lt;/u&gt;&lt;/b&gt;고 볼 수 있다!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #f6e199;&quot;&gt;&lt;b&gt;4) output_size : logits, labels를 BCEWithLogitsLoss에 전달&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5OXfP/dJMcaayUDfD/FwAdhInKtP8qsm9fG29Od0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5OXfP/dJMcaayUDfD/FwAdhInKtP8qsm9fG29Od0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5OXfP/dJMcaayUDfD/FwAdhInKtP8qsm9fG29Od0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5OXfP%2FdJMcaayUDfD%2FFwAdhInKtP8qsm9fG29Od0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;377&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;100번의 epoch를 돌려서 학습 시키는 코드이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;여기서 outputs 변수는 최종 확률이 아닌, sigmoid 확률로 변환하기 전 값(&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;logits&lt;/span&gt;)이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;BCEWithLogitsLoss는 outputs(logits)과 labels를 전달받아&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;내부적으로 sigmoid를 통한 확률로 변환 후, loss 값을 계산하는 것이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/560m1/dJMb997NJJM/eAvxzV725UpmyCZklMfoQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/560m1/dJMb997NJJM/eAvxzV725UpmyCZklMfoQ0/img.png&quot; data-alt=&quot;loss 계산하는 식을 보면 시그마(로짓)을 하는 것을 확인해 볼 수 있다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/560m1/dJMb997NJJM/eAvxzV725UpmyCZklMfoQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F560m1%2FdJMb997NJJM%2FeAvxzV725UpmyCZklMfoQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;41&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;loss 계산하는 식을 보면 시그마(로짓)을 하는 것을 확인해 볼 수 있다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그렇다면 왜 sigmoid를 바로하여 확률을 바로 구하지 않고 loss 내부적으로 sigmoid를 시행할까?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 마이너스 무한대에 빠지는 안정성 문제 때문이다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jdmwo/dJMcajoXGgz/qYNvNw8V0N67fqgePyNXm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jdmwo/dJMcajoXGgz/qYNvNw8V0N67fqgePyNXm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jdmwo/dJMcajoXGgz/qYNvNw8V0N67fqgePyNXm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJdmwo%2FdJMcajoXGgz%2FqYNvNw8V0N67fqgePyNXm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;590&quot; height=&quot;477&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이해를 위해 이 코드를 보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 코드는 사전에 sigmoid한 값을 loss에 넣은 BCELoss 방식과,&lt;br /&gt;BCEWithLoigtsLoss 내부에서 sigmoid를 활용하는 두 개의 안정성 차이를 보여준다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 logit 값이 1000.0 이라고 하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;sigmoid(1000.0)은 1에 아주 가까운 숫자가 나온다(float32의 데이터 처리 방식으로 인해 1이라는 숫자가 된다)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wZsxW/dJMb99Ugs6W/81Lv2KaYKDkomikj9Gg3JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wZsxW/dJMb99Ugs6W/81Lv2KaYKDkomikj9Gg3JK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wZsxW/dJMb99Ugs6W/81Lv2KaYKDkomikj9Gg3JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwZsxW%2FdJMb99Ugs6W%2F81Lv2KaYKDkomikj9Gg3JK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;34&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;sigmoid에 직접 넣을시, loss를 계산하는데&amp;nbsp; &quot;&lt;u&gt;&lt;b&gt;log(1 - 1) -&amp;gt; 마이너스 무한대&lt;/b&gt;&lt;/u&gt;&quot;가 되어 모델이 제대로 학습되지 않는다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반면, BCEWithLoigtsLoss는&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIgYFd/dJMcaiwVgJn/S6hbDKKbf0VM0yma69s2r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIgYFd/dJMcaiwVgJn/S6hbDKKbf0VM0yma69s2r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIgYFd/dJMcaiwVgJn/S6hbDKKbf0VM0yma69s2r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIgYFd%2FdJMcaiwVgJn%2FS6hbDKKbf0VM0yma69s2r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;555&quot; height=&quot;39&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt; 내부적으로 sigmoid(로짓)을 하게 되는데, 위에 식은 이해를 위한 식이지 실제로는 수식을 변경하여&lt;br /&gt;log(0)이라는 숫자가 나오지 않도록 안전하게 처리한다! &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;따라서 안정성을 위해 BCELoss가 아닌, BCEWithLoigtsLoss 방식을 사용할 것을 추천한다&lt;/span&gt;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;006&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/axz_keditor/emoticon/niniz/large/006.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/axz_keditor/emoticon/niniz/large/006.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5) 평가&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EVefB/dJMcadh6iRH/kiUOww8ocB3ThBK5VK3Es0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EVefB/dJMcadh6iRH/kiUOww8ocB3ThBK5VK3Es0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EVefB/dJMcadh6iRH/kiUOww8ocB3ThBK5VK3Es0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEVefB%2FdJMcadh6iRH%2FkiUOww8ocB3ThBK5VK3Es0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;594&quot; height=&quot;256&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;평가 코드에서는 loss 내부에서 확률로 변환하는 것이 아닌,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ouputs(logits)에 sigmoid를 직접 사용하여 확률을 계산하고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이후 round를 통해 반올림하여 0 또는 1로 값을 변경하였다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEmfKX/dJMcaa6LpqN/kP2IjpQ8jcqKEXRBS4Kji1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEmfKX/dJMcaa6LpqN/kP2IjpQ8jcqKEXRBS4Kji1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEmfKX/dJMcaa6LpqN/kP2IjpQ8jcqKEXRBS4Kji1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEmfKX%2FdJMcaa6LpqN%2FkP2IjpQ8jcqKEXRBS4Kji1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;903&quot; height=&quot;56&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;outputs를 보면 로짓값이 음수 ~ 양수로 나온 것을 볼 수 있는데 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;predictions(확률 계산 후 클래스로 변환)를 보면 양수는 1, 음수는 0으로 변환 된 것을 확인할 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이를 통해 ouputs의 logit 값만 보아도, 어떤 클래스로 예측할 것인지 예상할 수 있다!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CrossEntropyLoss&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffc1c8;&quot;&gt; &lt;b&gt;1) Y값 dtype long으로 변경하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2K89b/dJMcajvPa3a/4PbEAqoWkqRNPxO2Ybc8m0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2K89b/dJMcajvPa3a/4PbEAqoWkqRNPxO2Ybc8m0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2K89b/dJMcajvPa3a/4PbEAqoWkqRNPxO2Ybc8m0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2K89b%2FdJMcajvPa3a%2F4PbEAqoWkqRNPxO2Ybc8m0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;593&quot; height=&quot;192&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt; BCEWithLogitsLoss에서는 unsqueeze를 통해서 2D로 변경했던 거와 달리&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt;기존 데이터인 1D 형태로 유지하고, long으로 타입을 변경한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt; CrossEntropyLoss에서는 레이블을 클래스의 인덱스로 받도록 설계되어 있기 때문에 long 타입 변경이 꼭 필요하다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt;(0번 클래스, 1번 클래스..)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffc1c8;&quot;&gt;&lt;b&gt;2) Y값 unsqueeze를 통한 차원 늘리기&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvzu7L/dJMcahx1qlT/k8EA5rKxKmsTAwPpWCoAf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvzu7L/dJMcahx1qlT/k8EA5rKxKmsTAwPpWCoAf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvzu7L/dJMcahx1qlT/k8EA5rKxKmsTAwPpWCoAf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvzu7L%2FdJMcahx1qlT%2Fk8EA5rKxKmsTAwPpWCoAf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;653&quot; height=&quot;404&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt; BCEWithLogitsLoss에서는 output_size를 1로 하여 비선형 계산을 줄였던 것과 달리,&lt;br /&gt;CrossEntropyLoss에서는 class의 개수만큼 output 노드 수를 설계한다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;노드 수 증가에 따른 비선형 계산과 파라미터가 늘어났지만, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt; BCEWithLogitsLoss는 2진 분류밖에 못하는 방면, &lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;CrossEntropyLoss는 멀티 클래스 분류가 가능하다!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffc1c8;&quot;&gt;&lt;b&gt;3) 학습&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sa5tj/dJMcagTpXAd/kfO3Csj8RkXNCU5EkUZtBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sa5tj/dJMcagTpXAd/kfO3Csj8RkXNCU5EkUZtBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sa5tj/dJMcagTpXAd/kfO3Csj8RkXNCU5EkUZtBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSa5tj%2FdJMcagTpXAd%2FkfO3Csj8RkXNCU5EkUZtBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;690&quot; height=&quot;192&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt;BCEWithLogitsLoss와 똑같이 outputs의 값은 클래스나 확률이 아닌 logit이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;똑같이 outputs, labels를 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;CrossEntropyLoss에 전달하여 오차를 계산한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt; &lt;b&gt;4) torch.max(outputs, 1)를 통한 가능 큰 로짓을 가진 클래스 인덱스 반환&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kRIPr/dJMcabYTRNN/7a8skJHHuqpdHmJqpubkb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kRIPr/dJMcabYTRNN/7a8skJHHuqpdHmJqpubkb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kRIPr/dJMcabYTRNN/7a8skJHHuqpdHmJqpubkb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkRIPr%2FdJMcabYTRNN%2F7a8skJHHuqpdHmJqpubkb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1009&quot; height=&quot;289&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;torch.max(outputs, 1)을 함으로써 해당 로짓에서 가장 큰 값만을 반환하는 것이 아닌, &lt;br /&gt;가장 큰 로짓 + 로짓의 위치 인덱스를 같이 반환한다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;_, :&amp;nbsp; 반환한 최대 로짓 값 무시&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;predicted_classes : 최대 로짓값의 클래스 인덱스가 담긴 1D 텐서 (0, 1, 1 ...)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bltqZq/dJMcah5Trac/IOWuqdDTdGvALbdiDzRun1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bltqZq/dJMcah5Trac/IOWuqdDTdGvALbdiDzRun1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bltqZq/dJMcah5Trac/IOWuqdDTdGvALbdiDzRun1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbltqZq%2FdJMcah5Trac%2FIOWuqdDTdGvALbdiDzRun1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1194&quot; height=&quot;54&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로짓의 수를 보면 output node의 개수가 2이기 때문에 2클래스씩 로짓값이 나온걸 알 수 있다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2개의 로짓 값 중에 더 큰 로짓값을 가진 클래스의 인덱스를 반환하므로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;첫번째는 1번째 클래스, 두번째는 1번째 클래스로 예측된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;분류 loss function 3가지 정리&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 276px;&quot; border=&quot;1&quot; data-end=&quot;533&quot; data-start=&quot;37&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;항목&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt; BCELoss&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt; BCEWithLogitsLoss &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt; CrossEntropyLoss &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;168&quot; data-start=&quot;131&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;139&quot; data-start=&quot;131&quot;&gt;사용 목적&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;147&quot; data-start=&quot;139&quot; data-col-size=&quot;sm&quot;&gt;이진 분류&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;155&quot; data-start=&quot;147&quot; data-col-size=&quot;sm&quot;&gt;이진 분류&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;168&quot; data-start=&quot;155&quot; data-col-size=&quot;sm&quot;&gt;다중 클래스 분류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;218&quot; data-start=&quot;169&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;175&quot; data-start=&quot;169&quot;&gt;입력값&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;193&quot; data-start=&quot;175&quot; data-col-size=&quot;sm&quot;&gt;확률(probability)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;205&quot; data-start=&quot;193&quot; data-col-size=&quot;sm&quot;&gt;로짓(logit)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;218&quot; data-start=&quot;205&quot; data-col-size=&quot;sm&quot;&gt;로짓(logit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;248&quot; data-start=&quot;219&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;232&quot; data-start=&quot;219&quot;&gt;내부 Sigmoid&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;237&quot; data-start=&quot;232&quot; data-col-size=&quot;sm&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;242&quot; data-start=&quot;237&quot; data-col-size=&quot;sm&quot;&gt;있음&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;248&quot; data-start=&quot;242&quot; data-col-size=&quot;sm&quot;&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;278&quot; data-start=&quot;249&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;262&quot; data-start=&quot;249&quot;&gt;내부 Softmax&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;267&quot; data-start=&quot;262&quot; data-col-size=&quot;sm&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;272&quot; data-start=&quot;267&quot; data-col-size=&quot;sm&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;278&quot; data-start=&quot;272&quot; data-col-size=&quot;sm&quot;&gt;있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;316&quot; data-start=&quot;279&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;289&quot; data-start=&quot;279&quot;&gt;출력 노드 수&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;297&quot; data-start=&quot;289&quot; data-col-size=&quot;sm&quot;&gt;보통 1개&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;305&quot; data-start=&quot;297&quot; data-col-size=&quot;sm&quot;&gt;보통 1개&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;316&quot; data-start=&quot;305&quot; data-col-size=&quot;sm&quot;&gt;클래스 수만큼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;369&quot; data-start=&quot;317&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;329&quot; data-start=&quot;317&quot;&gt;Target 형태&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;338&quot; data-start=&quot;329&quot;&gt;0 또는 1&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;347&quot; data-start=&quot;338&quot; data-col-size=&quot;sm&quot;&gt;0 또는 1&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;369&quot; data-start=&quot;347&quot; data-col-size=&quot;sm&quot;&gt;클래스 인덱스 (0,1,2...)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;421&quot; data-start=&quot;370&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;381&quot; data-start=&quot;370&quot;&gt;모델 마지막 층&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;394&quot; data-start=&quot;381&quot;&gt;Sigmoid 필요&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;407&quot; data-start=&quot;394&quot; data-col-size=&quot;sm&quot;&gt;Linear 그대로&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;421&quot; data-start=&quot;407&quot; data-col-size=&quot;sm&quot;&gt;Linear 그대로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;467&quot; data-start=&quot;422&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;427&quot; data-start=&quot;422&quot;&gt;수식&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;438&quot; data-start=&quot;427&quot;&gt;BCE(p,y)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;452&quot; data-start=&quot;438&quot; data-col-size=&quot;sm&quot;&gt;Sigmoid&amp;rarr;BCE&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;467&quot; data-start=&quot;452&quot; data-col-size=&quot;sm&quot;&gt;Softmax&amp;rarr;NLL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;493&quot; data-start=&quot;468&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;477&quot; data-start=&quot;468&quot;&gt;수치 안정성&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;482&quot; data-start=&quot;477&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;487&quot; data-start=&quot;482&quot; data-col-size=&quot;sm&quot;&gt;높음&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;493&quot; data-start=&quot;487&quot; data-col-size=&quot;sm&quot;&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;533&quot; data-start=&quot;494&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;502&quot; data-start=&quot;494&quot;&gt;실무 사용&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;511&quot; data-start=&quot;502&quot; data-col-size=&quot;sm&quot;&gt;거의 안 씀&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;522&quot; data-start=&quot;511&quot; data-col-size=&quot;sm&quot;&gt;가장 많이 사용&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;533&quot; data-start=&quot;522&quot; data-col-size=&quot;sm&quot;&gt;다중분류 표준&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>BCELoss</category>
      <category>BCEwithLogitsLoss</category>
      <category>CrossEntropyLoss</category>
      <category>iris</category>
      <category>딥러닝</category>
      <category>분류</category>
      <category>인공지능</category>
      <category>파이토츠</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/5</guid>
      <comments>https://justkeepintouch.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-iris-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0-pythorch-BCEWithLogitsLoss-vs-CrossEntropyLoss-%EC%B0%A8%EC%9D%B4#entry5comment</comments>
      <pubDate>Mon, 15 Jun 2026 10:23:54 +0900</pubDate>
    </item>
    <item>
      <title>주피터 노트북, 코랩 matplotlib 그래프 시각화할때 한국어 깨짐 현상 해결 방법!</title>
      <link>https://justkeepintouch.tistory.com/entry/%EC%A3%BC%ED%94%BC%ED%84%B0-%EB%85%B8%ED%8A%B8%EB%B6%81-%EC%BD%94%EB%9E%A9-matplotlib-%EA%B7%B8%EB%9E%98%ED%94%84-%EC%8B%9C%EA%B0%81%ED%99%94%ED%95%A0%EB%95%8C-%ED%95%9C%EA%B5%AD%EC%96%B4-%EA%B9%A8%EC%A7%90-%ED%98%84%EC%83%81-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1484&quot; data-origin-height=&quot;1201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzAlp9/dJMcajblNGl/hK73y4ir8h8CEWfIqivCLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzAlp9/dJMcajblNGl/hK73y4ir8h8CEWfIqivCLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzAlp9/dJMcajblNGl/hK73y4ir8h8CEWfIqivCLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzAlp9%2FdJMcajblNGl%2FhK73y4ir8h8CEWfIqivCLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1484&quot; height=&quot;1201&quot; data-origin-width=&quot;1484&quot; data-origin-height=&quot;1201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래프를 시각화 하다보면 해당 그림처럼 한국어 부분이 네모 낳게 표시되어 정상적으로 출력되지 않을 것을 볼 수 있다&lt;br /&gt;&lt;br /&gt;이때 gemini를 돌려보면 한국어 txt를 설치해주는 코드를 주는데 한국어 텍스트를 깔고 어떤짓을 해도 한국어가 출력되지 않는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ㅡㅡ,,,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방법!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5j1CC/dJMcacXGBuu/1gNlOIN5OvcYHN7FHyK7OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5j1CC/dJMcacXGBuu/1gNlOIN5OvcYHN7FHyK7OK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5j1CC/dJMcacXGBuu/1gNlOIN5OvcYHN7FHyK7OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5j1CC%2FdJMcacXGBuu%2F1gNlOIN5OvcYHN7FHyK7OK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;500&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;코드 두줄을 넣어주기! &lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pip install koreanize_matplotlib&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #d4d4d4; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;import koreanize_matplotlib&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #d4d4d4; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;947&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/StPpv/dJMcaayPPP9/X6C6tH9fblc45FkjI6TlO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/StPpv/dJMcaayPPP9/X6C6tH9fblc45FkjI6TlO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/StPpv/dJMcaayPPP9/X6C6tH9fblc45FkjI6TlO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FStPpv%2FdJMcaayPPP9%2FX6C6tH9fblc45FkjI6TlO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;945&quot; height=&quot;947&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;947&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 한국어가 잘 출력되는 것을 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 귀찮은 점.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코랩에서 실행시 매 파일마다 &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;koreanize_matplotlib 라이브러리를 설치해줘야함&lt;/span&gt;&lt;/p&gt;</description>
      <category>그래프 시각화</category>
      <category>데이터사이언스</category>
      <category>주피터노트북</category>
      <category>코랩</category>
      <category>한국어</category>
      <category>한국어 깨짐현상</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/4</guid>
      <comments>https://justkeepintouch.tistory.com/entry/%EC%A3%BC%ED%94%BC%ED%84%B0-%EB%85%B8%ED%8A%B8%EB%B6%81-%EC%BD%94%EB%9E%A9-matplotlib-%EA%B7%B8%EB%9E%98%ED%94%84-%EC%8B%9C%EA%B0%81%ED%99%94%ED%95%A0%EB%95%8C-%ED%95%9C%EA%B5%AD%EC%96%B4-%EA%B9%A8%EC%A7%90-%ED%98%84%EC%83%81-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95#entry4comment</comments>
      <pubDate>Mon, 8 Jun 2026 17:23:04 +0900</pubDate>
    </item>
    <item>
      <title>선형(linear)과 비선형(nonlinear) 함수의 오해와 진실 [인공지능]</title>
      <link>https://justkeepintouch.tistory.com/entry/%EC%84%A0%ED%98%95linear%EA%B3%BC-%EB%B9%84%EC%84%A0%ED%98%95nonlinear-%ED%95%A8%EC%88%98%EC%9D%98-%EC%98%A4%ED%95%B4%EC%99%80-%EC%A7%84%EC%8B%A4-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오해1&lt;/b&gt; :&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; 선형 모델&lt;/b&gt;&lt;/span&gt;의 그래프는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;항상 직선&lt;/b&gt;&lt;/span&gt;이다?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;진실1&lt;/b&gt; : 그래프 모양은 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;곡선일 수도&lt;/span&gt;&lt;/b&gt; 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선형성은 그래프의 모양이 아니라 모델의 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;파라미터가 선형적으로 결합&lt;/span&gt;되는지에 의해 결정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LxO7i/dJMcaftkMjm/PMLvPxN8lEkElFn39y78P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LxO7i/dJMcaftkMjm/PMLvPxN8lEkElFn39y78P0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LxO7i/dJMcaftkMjm/PMLvPxN8lEkElFn39y78P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLxO7i%2FdJMcaftkMjm%2FPMLvPxN8lEkElFn39y78P0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1607&quot; height=&quot;920&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;y = 2x^2 + 3의 경우 곡선의 모양을 띠고 있으나, 선형 회귀로 학습할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 선형 회귀&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;y&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;1005&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TVzXJ/dJMcadCbUcM/GKdg4Kdey6VB7R2zQHwvRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TVzXJ/dJMcadCbUcM/GKdg4Kdey6VB7R2zQHwvRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TVzXJ/dJMcadCbUcM/GKdg4Kdey6VB7R2zQHwvRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTVzXJ%2FdJMcadCbUcM%2FGKdg4Kdey6VB7R2zQHwvRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1298&quot; height=&quot;1005&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;1005&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래프를 보면 곡선의 형태를 띄고 있으나,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;w0, w1, w2, w3에 대한 가중치에선 여전히 선형선을 띄고 있음!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;비선형 함수&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CHqKf/dJMcaa6GkIT/IIIggLH7UvTxkkz5H1vCYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CHqKf/dJMcaa6GkIT/IIIggLH7UvTxkkz5H1vCYk/img.png&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;670&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.2735%; margin-right: 10px;&quot; data-widthpercent=&quot;50.86&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CHqKf/dJMcaa6GkIT/IIIggLH7UvTxkkz5H1vCYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCHqKf%2FdJMcaa6GkIT%2FIIIggLH7UvTxkkz5H1vCYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1179&quot; height=&quot;670&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uE1vA/dJMcacXGyhb/F5EGGZHuLkkKoBk4ro2Fjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uE1vA/dJMcacXGyhb/F5EGGZHuLkkKoBk4ro2Fjk/img.png&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;703&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.5638%;&quot; data-widthpercent=&quot;49.14&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uE1vA/dJMcacXGyhb/F5EGGZHuLkkKoBk4ro2Fjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuE1vA%2FdJMcacXGyhb%2FF5EGGZHuLkkKoBk4ro2Fjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1195&quot; height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt; 왼쪽 ) &amp;nbsp;시그모이드 함수 / 오른쪽 ) ReLU 함수 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZ2DJ/dJMcaaMktbs/i8whNUBT8FmKB3RR8MoNA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZ2DJ/dJMcaaMktbs/i8whNUBT8FmKB3RR8MoNA1/img.png&quot; data-alt=&quot;그외 여러 지수함수, 로그함수, 절대값 함수&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZ2DJ/dJMcaaMktbs/i8whNUBT8FmKB3RR8MoNA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZ2DJ%2FdJMcaaMktbs%2Fi8whNUBT8FmKB3RR8MoNA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;318&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그외 여러 지수함수, 로그함수, 절대값 함수&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;비선형 모델&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;y=w0+w1^2x&lt;/li&gt;
&lt;li&gt;y=sin(w1x)&lt;/li&gt;
&lt;li&gt;y=e^w1x&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터(가중치 w)가 제곱이 되거나, 지수함수에 들어가는 등 비선형성을 띔 -&amp;gt; 비선형 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오해 2&lt;/b&gt; : 선형 모델은 복잡한 패턴을 학습하지 못한다?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 진실 2&lt;/b&gt; : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Feature Engineering&lt;/b&gt;&lt;/span&gt;을 사용하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;선형 모델도 복잡한 곡선 패턴&lt;/b&gt;&lt;/span&gt;을 학습할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;x&amp;nbsp; (원본 특성)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;-&amp;gt; x&amp;sup2; (추가 특성)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;-&amp;gt; x&amp;sup3; (추가 특성)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x의 차수를 변경해서 복잡한 패턴을 학습할 수 있도록 그래프 모양을 만들어줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deqrKB/dJMcahkrYlb/9mS5hVoBghHkD11HIBuvG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deqrKB/dJMcahkrYlb/9mS5hVoBghHkD11HIBuvG1/img.png&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;497&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.6994%; margin-right: 10px;&quot; data-widthpercent=&quot;47.25&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deqrKB/dJMcahkrYlb/9mS5hVoBghHkD11HIBuvG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeqrKB%2FdJMcahkrYlb%2F9mS5hVoBghHkD11HIBuvG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;708&quot; height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dm1Dcl/dJMcadCbVz9/AAW8IroqW1xnW97SuWufnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dm1Dcl/dJMcadCbVz9/AAW8IroqW1xnW97SuWufnK/img.png&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;293&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.1378%;&quot; data-widthpercent=&quot;52.75&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dm1Dcl/dJMcadCbVz9/AAW8IroqW1xnW97SuWufnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm1Dcl%2FdJMcadCbVz9%2FAAW8IroqW1xnW97SuWufnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;466&quot; height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;왼쪽) 그래프는 데이터와 not fit한 상태임 / 오른쪽) x&amp;sup2;, x&amp;sup3; 등의 특성을 추가하여 곡선 패턴에 맞게 학습한 결과 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BUT ! 해당 방법을 잘 사용하지 않는다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;사람이 데이터에 적합한 모델을 함수로 직접 만들어야 한다(다항식을 직접 꾸며야 함)&lt;/li&gt;
&lt;li&gt;사람이 하기 때문에 시간, 비용이 많이 든다&lt;/li&gt;
&lt;li&gt;변수가 늘어남에 따라 특성 수가 증가하여 현실적인 불가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 따라서 AI에서는 Feature Engineering을 수동으로 수행하기보다, &lt;u&gt;&lt;b&gt;비선형 모델을 사용하여 자동&lt;/b&gt;&lt;/u&gt;으로 학습하도록 한&lt;/p&gt;</description>
      <category>비선형함수</category>
      <category>선형 비선형</category>
      <category>선형함수</category>
      <category>선형회귀</category>
      <category>오해와 진실</category>
      <category>인공지능</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/3</guid>
      <comments>https://justkeepintouch.tistory.com/entry/%EC%84%A0%ED%98%95linear%EA%B3%BC-%EB%B9%84%EC%84%A0%ED%98%95nonlinear-%ED%95%A8%EC%88%98%EC%9D%98-%EC%98%A4%ED%95%B4%EC%99%80-%EC%A7%84%EC%8B%A4-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5#entry3comment</comments>
      <pubDate>Mon, 8 Jun 2026 16:36:51 +0900</pubDate>
    </item>
    <item>
      <title>c++ (생성자 멤버 초기화 리스트 / 디폴트 매개변수 / 함수 초기화 / 생성자 호출) 헷갈리는 문법 한 번에 정리!</title>
      <link>https://justkeepintouch.tistory.com/entry/c-%EC%83%9D%EC%84%B1%EC%9E%90-%EB%A9%A4%EB%B2%84-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%94%94%ED%8F%B4%ED%8A%B8-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-%ED%95%A8%EC%88%98-%EC%B4%88%EA%B8%B0%ED%99%94-%EC%83%9D%EC%84%B1%EC%9E%90-%ED%98%B8%EC%B6%9C-%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%EB%AC%B8%EB%B2%95-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;c++ 언어의 경우 java 언어와는 달리 허용하는 문법이 많은데 그러다 보니 오히려 여러 가지 문법 사이에 어떤 걸 사용해야 하는지 혼돈이 오기 쉽다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 &lt;u&gt;생성자를 초기화할 때&lt;/u&gt; {} 안에 대입하여 초기화하는 것과 리스트로 초기화 하는 방식이 초반에 헷갈렸고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;디폴트 매개변수&lt;/u&gt;를 사용하면서 기본 생성자와 파라미터 있는 생성자를 합치는 방식.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main함수에서 &lt;u&gt;사용자로 부터 입력값을 받고&lt;/u&gt; 해당 객체에 저장하는 방식 등이 헷갈렸다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헷갈릴 때 마다 GPT를 사용하면서 이해했다고 생각하며 넘어갔더니 매번 같은 부분에서 막히는 나 자신을 발견하였다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 얻은 건 뇌에서 쉽게 사라지는 거 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명품 c++ 9장에선 virtual 가상함수&lt;/b&gt;를 사용하여 재정의하는 &lt;b&gt;다형성&lt;/b&gt;에 대해서 설명하고 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 9-4를 오른쪽의 조건에 맞게 변환하는 문제가 내 발몫을 잡았다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zsHSY/btsOoQmXUGK/jdSqiYkkx9uxmEXmBCKoLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zsHSY/btsOoQmXUGK/jdSqiYkkx9uxmEXmBCKoLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zsHSY/btsOoQmXUGK/jdSqiYkkx9uxmEXmBCKoLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzsHSY%2FbtsOoQmXUGK%2FjdSqiYkkx9uxmEXmBCKoLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;440&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;문제의 조건을 정리해 보면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;Shape 클래스를 상속받는 Circle, Rect 클래스 구현&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;각 클래스에 다음 멤버 변수:
&lt;p data-ke-size=&quot;size16&quot;&gt;Circle &amp;rarr; int radius&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Rect &amp;rarr; int width, int height&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;draw() 함수에서는:
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 클래스 Shape::draw() 먼저 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음 Circle(radius: XX), Rect(width: XX, height: YY) 형식 출력&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;Circle, Rect 생성자는 디폴트 파라미터를 사용하고 기본값은 1&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;main()에서는 Circle, Rect 객체 선언 후 사용자 반지름, 너비, 높이 입력으로 값 받기(양수가 입력될 때까지)&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;Shape* pShape로 업캐스팅 후 draw() 호출&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건 1,2를 보면 우선적으로 Rect 클래스를 먼저 만들어주고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Circle과 Rect가 Shape의 상속을 private으로 받게 해 준 후,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스 내부에 private으로 변수를 정의해 준다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 조건 3의 출력 형태에 맞게 cout &amp;lt;&amp;lt; 형식을 조정해 준다&lt;/p&gt;
&lt;pre id=&quot;code_1748858350048&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Shape {
public:
	virtual void draw() {
		cout &amp;lt;&amp;lt; &quot;--shape--&quot;;
	}
};

class Circle :public Shape { // -&amp;gt; **조건1** public 으로 shape 클래스 상속받기
	int radius; // -&amp;gt; **조건2** int radius 변수 private으로 정의
public:
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Circle (radius: &quot; &amp;lt;&amp;lt; radius &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl; // -&amp;gt; **조건3** 출력 형태 맞춰주기
	}
};

class Rect :public Shape { // -&amp;gt; **조건1** public 으로 shape 클래스 상속받기
	int width, height; // -&amp;gt; **조건2** int width, int height 변수 private으로 정의
public:
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Rect (width: &quot; &amp;lt;&amp;lt; width &amp;lt;&amp;lt; &quot;,height: &quot; &amp;lt;&amp;lt; height &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl;
        // -&amp;gt; **조건3** 출력 형태 맞춰주기
	}
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음 조건부터 헷갈리는 영역이 나오는데&lt;br /&gt;조건 4의 &lt;b&gt;디폴트 파라미터를 사용하고 기본 값이 1&lt;/b&gt;이라는 것은 (파라미터가 없는 생성자 + 파라미터가 있는 생성자 = 1)로 합치라는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 무슨 말이냐?!&lt;/p&gt;
&lt;pre id=&quot;code_1748869748130&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Circle() {} // 기본 생성자
Circle(int radius) { this-&amp;gt;radius = radius; } // 매개변수 생성자&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래는 이런 식으로 기본 생성자와&amp;nbsp; 매개변수 생성자 나눠서 작성하지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1748869996790&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Circle(int radius = 1) { this-&amp;gt;radius = radius; } // 디폴트 매개 변수 기본값 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로&amp;nbsp; 코드를 합치게 되면&amp;nbsp; Circle circle; 코드를 작성할 때 Circle()이라는 생성자가 호출되게 되는데 radius = 1로 자동 대입하게 된다. 말 그대로 생성자 호출할 때 값을 생략해도 default로 값은 1이라는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 생성자를 초기화하는 방법은 2가지가 있는데&lt;br /&gt;{} 안에 코드를 작성하며 초기화하는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;일반대입 방식&lt;/span&gt;과,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트 방식으로 초기화하는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;생성자 초기화 리스트 방식&lt;/span&gt;이 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1748870658773&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Circle {
	int radius;
public:
	Circle(int r) { radius = r; } // 일반 대입
    Circle(int r) : radius(r) {} // 생성자 초기화 리스트
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 방식을 사용해도 결과는 같지만 생성자 초기화 리스트 방식으로 사용하면 좀 더 안정적으로 빠르게 코딩할 수 있다는 장점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로써 클래스 및 외부함수 정의는 끝났다!&lt;/p&gt;
&lt;pre id=&quot;code_1748871342771&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Shape {
public:
	virtual void draw() {
		cout &amp;lt;&amp;lt; &quot;--shape--&quot;;
	}
};

class Circle :public Shape { // 조건1
	int radius; // 조건2
public:
	Circle(int radius = 1) : radius(radius) {} // 조건4
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Circle (radius: &quot; &amp;lt;&amp;lt; radius &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl; // 조건3
	}
};

class Rect :public Shape { // 조건 1
	int width, height; // 조건2
public:
	Rect(int width = 1, int height = 1) : width(width), height(height) {} // 조건4
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Rect (width: &quot; &amp;lt;&amp;lt; width &amp;lt;&amp;lt; &quot;,height: &quot; &amp;lt;&amp;lt; height &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl; // 조건3
	}
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 조건 5의 main() 함수 정의를 하면 되는데&lt;br /&gt;사용자로부터 반지름, 너비, 높이 값을 &lt;u&gt;양수일 때까지 반복적&lt;/u&gt;으로 받아야 하기 때문에&lt;/p&gt;
&lt;pre id=&quot;code_1748872074822&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int main() {
	int radius, width, height; // 사용자 입력에 받을 변수 미리 선언
    
	while (1) {
		cout &amp;lt;&amp;lt; &quot;반지름, 너비, 높이를 입력하시오: &quot;;
		cin &amp;gt;&amp;gt; radius &amp;gt;&amp;gt; width &amp;gt;&amp;gt; height;

		if (radius &amp;gt; 0 &amp;amp;&amp;amp; width &amp;gt; 0 &amp;amp;&amp;amp; height &amp;gt; 0) {
			break;
		}
	}

	Circle circle(radius);
	Rect rect(width, height); 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문을 사용해서 양수일 때 반복문을 빠져나오게 정의해 주면 된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(사용자로부터 입력받을 변수 radius, width, height을 전부 0으로 초기화해 주면 좀 더 안전하게 사용 가능하다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 받은 값을 토대로 출력하기 객체를 생성하면서 값을 넣어주면 된다!&amp;nbsp; -&amp;gt;&lt;b&gt; -- 삐 -- 코드상으론 오류가 없지만 조건 5에 맞지 않음!!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건 5를 다시 보자!&lt;/p&gt;
&lt;div style=&quot;background-color: #fafafa; color: #333333;&quot; data-text-less=&quot;닫기&quot; data-text-more=&quot;더보기&quot; data-ke-type=&quot;moreLess&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;main()에서는 Circle, Rect &lt;span style=&quot;color: #ee2323;&quot;&gt;객체 선언후&lt;/span&gt; 사용자 반지름, 너비, 높이 입력으로 값 받기(양수가 입력될 때 까지)&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 작성한 코드에선&amp;nbsp; 입력받은 값을 토대로 객체를 선언하고 있는데 조건에선 일단 객체를 선언하고 입력을 받으라고 했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1748872668633&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int main() {
	int radius, width, height; // 사용자 입력에 받을 변수 미리 선언
    
    Circle circle(radius);
	Rect rect(width, height); 
    
	while (1) {
		cout &amp;lt;&amp;lt; &quot;반지름, 너비, 높이를 입력하시오: &quot;;
		cin &amp;gt;&amp;gt; radius &amp;gt;&amp;gt; width &amp;gt;&amp;gt; height;

		if (radius &amp;gt; 0 &amp;amp;&amp;amp; width &amp;gt; 0 &amp;amp;&amp;amp; height &amp;gt; 0) {
			break;
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다고 해서 이런 식으로 코드를 상단에 올린다면 radius, width, height 값은 입력받기 전이므로 오류가 발생하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1748872978145&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int main() {
	int radius = 0, width = 0, height = 0;

	Circle circle; // 객체 선언
	Rect rect; // 객체 선언

	while (1) {
		cout &amp;lt;&amp;lt; &quot;반지름, 너비, 높이를 입력하시오: &quot;;
		cin &amp;gt;&amp;gt; radius &amp;gt;&amp;gt; width &amp;gt;&amp;gt; height;

		if (radius &amp;gt; 0 &amp;amp;&amp;amp; width &amp;gt; 0 &amp;amp;&amp;amp; height &amp;gt; 0) {
			break;
		}
	}

	Circle circle(radius); // 객체 재정의!
	Rect rect(width, height); // 객체 재정의!
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 객체를 두 번 선언해 버리면 객체 재정의 오류가 난다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;받은 값을 가장 안전하게 저장할 수 있는 set 함수를 사용하여 Circle과 Rect 각각의 클래스에 정의해 주는 것&lt;/span&gt;이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 외부 함수를 수정하면&lt;/p&gt;
&lt;pre id=&quot;code_1748873235873&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Circle :public Shape {
	int radius;
public:
	Circle(int radius = 1) : radius(radius) {}
	void setRadius(int radius) { this-&amp;gt;radius=radius; } // set함수 정의
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Circle (radius: &quot; &amp;lt;&amp;lt; radius &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl;
	}
};

class Rect :public Shape {
	int width, height;
public:
	Rect(int width = 1, int height = 1) : width(width), height(height) {}
    void set(int width, int height) { his-&amp;gt;width = width; this-&amp;gt;height = height; } // set함수 정의
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Rect (width: &quot; &amp;lt;&amp;lt; width &amp;lt;&amp;lt; &quot;,height: &quot; &amp;lt;&amp;lt; height &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl;
	}
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Circle과 Rect 각각에 정의한 set 함수는 이러하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 이제 main 함수에는 각각의 객체로 접근한 뒤 사용자로부터 입력받은 값을 넣어 함수를 호출하면 된다&lt;/p&gt;
&lt;pre id=&quot;code_1748873786971&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int main() {
	int radius = 0, width = 0, height = 0;

	Circle circle; // 객체 선언
	Rect rect; // 객체 선언

	while (1) {
		cout &amp;lt;&amp;lt; &quot;반지름, 너비, 높이를 입력하시오: &quot;;
		cin &amp;gt;&amp;gt; radius &amp;gt;&amp;gt; width &amp;gt;&amp;gt; height;

		if (radius &amp;gt; 0 &amp;amp;&amp;amp; width &amp;gt; 0 &amp;amp;&amp;amp; height &amp;gt; 0) {
			break;
		}
	}

	circle.set(radius); // set함수 호출
	rect.set(width, height); // set함수 호출
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 말이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp; 정말 끝이 보인다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건 6번만&amp;nbsp; 해결하면 된다&lt;/p&gt;
&lt;div style=&quot;background-color: #fafafa; color: #333333;&quot; data-text-less=&quot;닫기&quot; data-text-more=&quot;더보기&quot; data-ke-type=&quot;moreLess&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;Shape* pShape로 업캐스팅 후 draw() 호출&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업캐스팅이라는 의미를 알려면 상속에 대해서 잘 알고 있어야 하는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 보면 Shape은 기본 클래스이고 Circle과 Rect는 상속을 받는 파생 클래스임을 알 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업캐스팅이라는 것은 기본 클래스의 포인터가 파생 클래스 객체의 주소를 갖는 것인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 통해 보면 이러하다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Shape* pShape = &amp;amp;circle; // 업캐스팅&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Shape* pShape = &amp;amp;rect; // 업캐스팅&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*여기서 주의할 점은 업캐스팅한 포인터는 기본 클래스의 함수만 호출할 수 있다는 점이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 우리가 호출하고자 하는 최종적인 &lt;b&gt;&lt;u&gt;draw() 함수는 가상함수 이기 때문에 기본 클래스가 아닌, 오버라이딩한 파생 클래스의 draw()가 런타임 중 실행될 것이라는 것&lt;/u&gt;&lt;/b&gt;을 짐작할 수 있다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적으로 완성된 코드는 이러하다&lt;/p&gt;
&lt;pre id=&quot;code_1748874580286&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Shape {
public:
	virtual void draw() {
		cout &amp;lt;&amp;lt; &quot;--shape--&quot;;
	}
};

class Circle :public Shape {
	int radius;
public:
	Circle(int radius = 1) : radius(radius) {}
	void set(int radius) { this-&amp;gt;radius=radius; }
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Circle (radius: &quot; &amp;lt;&amp;lt; radius &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl;
	}
};

class Rect :public Shape {
	int width, height;
public:
	Rect(int width = 1, int height = 1) : width(width), height(height) {}
	void set(int width, int height) { this-&amp;gt;width = width; this-&amp;gt;height = height;
	}
	virtual void draw() {
		Shape::draw();
		cout &amp;lt;&amp;lt; &quot;Rect (width: &quot; &amp;lt;&amp;lt; width &amp;lt;&amp;lt; &quot;,height: &quot; &amp;lt;&amp;lt; height &amp;lt;&amp;lt; &quot;)&quot; &amp;lt;&amp;lt; endl;
	}
};

int main() {
	int radius = 0, width = 0, height = 0;

	Circle circle; // 객체 선언
	Rect rect; 

	while (1) {
		cout &amp;lt;&amp;lt; &quot;반지름, 너비, 높이를 입력하시오: &quot;;
		cin &amp;gt;&amp;gt; radius &amp;gt;&amp;gt; width &amp;gt;&amp;gt; height;

		if (radius &amp;gt; 0 &amp;amp;&amp;amp; width &amp;gt; 0 &amp;amp;&amp;amp; height &amp;gt; 0) {
			break;
		}
	}

	circle.set(radius);
	rect.set(width, height);

	Shape* pShape = &amp;amp;circle; // 업캐스팅
	pShape-&amp;gt;draw();

	pShape = &amp;amp;rect; // 업캐스팅
	pShape-&amp;gt;draw();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UGWs7/btsOorVoBek/Ji9eUxbSo3ELgN9pwzVX11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UGWs7/btsOorVoBek/Ji9eUxbSo3ELgN9pwzVX11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UGWs7/btsOorVoBek/Ji9eUxbSo3ELgN9pwzVX11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUGWs7%2FbtsOorVoBek%2FJi9eUxbSo3ELgN9pwzVX11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;914&quot; height=&quot;212&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상 출력 확인!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로써 애매한 지식 때문에 느꼈던 불편함에서 잠시나마 해방되었다.&lt;/p&gt;</description>
      <category>c++ #명품c++ #디폴트 매개변수 #생성자 초기화 #cin 입력값 받기 #업캐스팅 #가상함수 #virtual</category>
      <category>다형성</category>
      <category>상속</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/2</guid>
      <comments>https://justkeepintouch.tistory.com/entry/c-%EC%83%9D%EC%84%B1%EC%9E%90-%EB%A9%A4%EB%B2%84-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%94%94%ED%8F%B4%ED%8A%B8-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-%ED%95%A8%EC%88%98-%EC%B4%88%EA%B8%B0%ED%99%94-%EC%83%9D%EC%84%B1%EC%9E%90-%ED%98%B8%EC%B6%9C-%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%EB%AC%B8%EB%B2%95-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC#entry2comment</comments>
      <pubDate>Mon, 2 Jun 2025 23:45:25 +0900</pubDate>
    </item>
    <item>
      <title>24.04 LTS 우분투 실행중 프리징 현상(멈춤 현상)해결하기 생각보다 간단하게 해결</title>
      <link>https://justkeepintouch.tistory.com/entry/2404-LTS-%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%8B%A4%ED%96%89%EC%A4%91-%ED%94%84%EB%A6%AC%EC%A7%95-%ED%98%84%EC%83%81%EB%A9%88%EC%B6%A4-%ED%98%84%EC%83%81%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-%EC%83%9D%EA%B0%81%EB%B3%B4%EB%8B%A4-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%ED%95%B4%EA%B2%B0</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;우선 24.04 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;LTS&lt;/span&gt;란 : 오랜 기간 동안 보안 및 안정성 업데이트를 제공하여 가장 안전한 버전이라고 보면 된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 우선 우분투를 깔때 이걸로 깔기 추천&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pSz3y/btsMDSa5b49/koOWl5FsWc3tZveKajuEPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pSz3y/btsMDSa5b49/koOWl5FsWc3tZveKajuEPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pSz3y/btsMDSa5b49/koOWl5FsWc3tZveKajuEPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpSz3y%2FbtsMDSa5b49%2FkoOWl5FsWc3tZveKajuEPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;176&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신나게 Oracle VirtualBox 깔고 우분투를 설치하려는데 자꾸만 화면이 멈추는 프리징 현상을 발견했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 화면에서 다음으로 넘어가질 않음...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;890&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lrubw/btsMESusqSn/JClMaduaSIXA8pujORqI91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lrubw/btsMESusqSn/JClMaduaSIXA8pujORqI91/img.png&quot; data-alt=&quot;우분투과 고군분투... 이때 별의별 생각이 다듦&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lrubw/btsMESusqSn/JClMaduaSIXA8pujORqI91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flrubw%2FbtsMESusqSn%2FJClMaduaSIXA8pujORqI91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;347&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;890&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;우분투과 고군분투... 이때 별의별 생각이 다듦&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에 &quot;우분투 프리징 현상&quot;을 검색하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&quot;그래픽끼리의 충돌 현상으로 인한 문제 해결 글&quot;&lt;/span&gt;&lt;/b&gt;이 대부분인데 쉽게 말하자면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;우분투에서 기본적으로 NVIDIA드라이버를 사용하는데, &lt;br /&gt;&lt;u&gt;NVIDIA 드라이버의 Nouveau라는 것이 GPU를 옳바르게 지원하지 못해 충돌&lt;/u&gt;이 생기는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방법 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일시적으로 그래픽 카드 사용을 막은후 최적의 공식 그래픽 적용해주기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. GRUB 편집기(e 누르면 편집 상태로 들어감)에서 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;quiet splash 옆에 nomodeset&lt;/span&gt; 을 적고 ctrl + x (재부팅)를 눌러줌&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;커널이 부팅중에 그래픽카드 직접 제어하는 걸 막아줌&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceQf5x/btsMGeXoQzB/msR1tvnepVpmndJeXy4XRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceQf5x/btsMGeXoQzB/msR1tvnepVpmndJeXy4XRK/img.png&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;508&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.6326%; margin-right: 10px;&quot; data-widthpercent=&quot;50.22&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceQf5x/btsMGeXoQzB/msR1tvnepVpmndJeXy4XRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceQf5x%2FbtsMGeXoQzB%2FmsR1tvnepVpmndJeXy4XRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;722&quot; height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QYKgv/btsMD52qIyP/AMXKQdapF9d25GtAkUBSl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QYKgv/btsMD52qIyP/AMXKQdapF9d25GtAkUBSl1/img.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;511&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.2046%;&quot; data-widthpercent=&quot;49.78&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QYKgv/btsMD52qIyP/AMXKQdapF9d25GtAkUBSl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQYKgv%2FbtsMD52qIyP%2FAMXKQdapF9d25GtAkUBSl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;511&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;e키를 눌러 GRUB 편집 모드로 진입후 -&amp;gt; nomodeset 입력 후 ctrl + x (재부팅)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 그래픽 제어를 막았으니 두번째로 최상의 NVIDIA 공식 드라이버 설치해서 적용해주면 됨&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 그래픽 문제인줄 알고 위에 행위를 몇 시간 동안 했으나 해결되지 않았다!! 여전히 같은 부분에서 멈춤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거 해결 못하면 네프밍 수업에서 실습 못한다는 생각에 무서워서 밤새 서칭한 결과....&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;CPU 코어, RAM(메모리), 비디오 메모리, 3D 가속 체크 유무의 문제였음...!&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;RAM(메모리) : 최소 4GB이상(여유 있으면 8GB 추천)&lt;br /&gt;하드디스트 : 가장 상단으로 올리기&lt;br /&gt;CPU : 4개 이상&lt;br /&gt;Videao Memory : 128MB&lt;br /&gt;Enable 3D : 사용 선택&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1165&quot; data-origin-height=&quot;833&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM8Oko/btsMFghqdb0/X7DSRhkDbwiZGlKeVX35jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM8Oko/btsMFghqdb0/X7DSRhkDbwiZGlKeVX35jk/img.png&quot; data-alt=&quot;RAM(메모리) : 최소 4GB이상(여유 있으면 8GB 추천) 하드디스크 : 가장 상단으로 올리기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM8Oko/btsMFghqdb0/X7DSRhkDbwiZGlKeVX35jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM8Oko%2FbtsMFghqdb0%2FX7DSRhkDbwiZGlKeVX35jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;833&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1165&quot; data-origin-height=&quot;833&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RAM(메모리) : 최소 4GB이상(여유 있으면 8GB 추천) 하드디스크 : 가장 상단으로 올리기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/33kpP/btsMFuGuKGC/OodkBRUwZHTXJ0jbSRaSTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/33kpP/btsMFuGuKGC/OodkBRUwZHTXJ0jbSRaSTK/img.png&quot; data-alt=&quot;CPU : 4개 이상&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/33kpP/btsMFuGuKGC/OodkBRUwZHTXJ0jbSRaSTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F33kpP%2FbtsMFuGuKGC%2FOodkBRUwZHTXJ0jbSRaSTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;836&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CPU : 4개 이상&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEBFjK/btsMENNsC9i/6nUKGA9HKwIKkdK3sNUcL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEBFjK/btsMENNsC9i/6nUKGA9HKwIKkdK3sNUcL1/img.png&quot; data-alt=&quot;Videao Memory : 128MB Enable 3D : 사용 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEBFjK/btsMENNsC9i/6nUKGA9HKwIKkdK3sNUcL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEBFjK%2FbtsMENNsC9i%2F6nUKGA9HKwIKkdK3sNUcL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;387&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Videao Memory : 128MB Enable 3D : 사용 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pcQyn/btsMExRISRF/izZh62NaALPQislth5ni50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pcQyn/btsMExRISRF/izZh62NaALPQislth5ni50/img.png&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;908&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.96&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.3799%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pcQyn/btsMExRISRF/izZh62NaALPQislth5ni50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpcQyn%2FbtsMExRISRF%2FizZh62NaALPQislth5ni50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1276&quot; height=&quot;908&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRwNpY/btsMFwKY5b2/UZdSJw9Kyv5ek2FJNp6qtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRwNpY/btsMFwKY5b2/UZdSJw9Kyv5ek2FJNp6qtk/img.png&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;908&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4573%;&quot; data-widthpercent=&quot;50.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRwNpY/btsMFwKY5b2/UZdSJw9Kyv5ek2FJNp6qtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRwNpY%2FbtsMFwKY5b2%2FUZdSJw9Kyv5ek2FJNp6qtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1278&quot; height=&quot;908&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;짜짠 그후 우분투가 잘 설치됨!&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;*느낀점 : &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;어쩌면 가장 기본적인 사항으로 더 빠르게 해결할 수 있는 문제였을 수도 있다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;오류를 해결하고 나니 운영체제 첫 강의자료에 적힌 '기본이 가장 중요하므로 너무 조급하게 생각하지 말고 기본을 탄탄히 할 것'이란 글이 떠올랐다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;DON'T PANIC!&lt;/span&gt;&lt;/p&gt;</description>
      <category>VirtualBox</category>
      <category>개발자</category>
      <category>네트워크프로그래밍</category>
      <category>리눅스</category>
      <category>백엔드개발</category>
      <category>오류 해결</category>
      <category>우분투</category>
      <category>운영체제</category>
      <category>코딩</category>
      <category>프리징 멈춤현상</category>
      <author>justkeepintouch</author>
      <guid isPermaLink="true">https://justkeepintouch.tistory.com/1</guid>
      <comments>https://justkeepintouch.tistory.com/entry/2404-LTS-%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%8B%A4%ED%96%89%EC%A4%91-%ED%94%84%EB%A6%AC%EC%A7%95-%ED%98%84%EC%83%81%EB%A9%88%EC%B6%A4-%ED%98%84%EC%83%81%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-%EC%83%9D%EA%B0%81%EB%B3%B4%EB%8B%A4-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%ED%95%B4%EA%B2%B0#entry1comment</comments>
      <pubDate>Mon, 10 Mar 2025 07:26:10 +0900</pubDate>
    </item>
  </channel>
</rss>