Buckets:

rtrm's picture
download
raw
47 kB
import{s as Ie,o as Ae,n as ke}from"../chunks/scheduler.37c15a92.js";import{S as Ze,i as Ce,g as d,s as i,r as b,A as Qe,h as J,f as p,c as u,j as we,u as j,x as w,k as Te,y as Ne,a as M,v as y,t as c,b as v,d as m,w as f,p as B}from"../chunks/index.7cb9c9b8.js";import{T as he}from"../chunks/Tip.d10b3fc9.js";import{Y as _e}from"../chunks/Youtube.8666c400.js";import{C as T}from"../chunks/CodeBlock.abae2786.js";import{C as $e}from"../chunks/CourseFloatingBanner.df82c153.js";import{F as ge}from"../chunks/FrameworkSwitchCourse.97630871.js";import{H as Xl,E as Ve}from"../chunks/getInferenceSnippets.b6a8c7d2.js";function We(o){let e,a;return e=new $e({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section5_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section5_tf.ipynb"}]}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function Ee(o){let e,a;return e=new $e({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section5_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section5_pt.ipynb"}]}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function ze(o){let e,a;return e=new _e({props:{id:"ROxrFOEbsQE"}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function Re(o){let e,a;return e=new _e({props:{id:"M6adb1j2jPI"}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function Ge(o){let e,a,s,r;return e=new T({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIudG9rZW5pemUoc2VxdWVuY2UpJTBBaWRzJTIwJTNEJTIwdG9rZW5pemVyLmNvbnZlcnRfdG9rZW5zX3RvX2lkcyh0b2tlbnMpJTBBaW5wdXRfaWRzJTIwJTNEJTIwdGYuY29uc3RhbnQoaWRzKSUwQSUyMyUyMFRoaXMlMjBsaW5lJTIwd2lsbCUyMGZhaWwuJTBBbW9kZWwoaW5wdXRfaWRzKQ==",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForSequenceClassification
checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>
tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
input_ids = tf.constant(ids)
<span class="hljs-comment"># This line will fail.</span>
model(input_ids)`,wrap:!1}}),s=new T({props:{code:"SW52YWxpZEFyZ3VtZW50RXJyb3IlM0ElMjBJbnB1dCUyMHRvJTIwcmVzaGFwZSUyMGlzJTIwYSUyMHRlbnNvciUyMHdpdGglMjAxNCUyMHZhbHVlcyUyQyUyMGJ1dCUyMHRoZSUyMHJlcXVlc3RlZCUyMHNoYXBlJTIwaGFzJTIwMTk2JTIwJTVCT3AlM0FSZXNoYXBlJTVE",highlighted:'InvalidArgumentError: Input to reshape <span class="hljs-keyword">is</span> a tensor <span class="hljs-keyword">with</span> <span class="hljs-number">14</span> values, but the requested shape has <span class="hljs-number">196</span> [Op:Reshape]',wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function Xe(o){let e,a,s,r;return e=new T({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEFzZXF1ZW5jZSUyMCUzRCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFpbnB1dF9pZHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoaWRzKSUwQSUyMyUyMFRoaXMlMjBsaW5lJTIwd2lsbCUyMGZhaWwuJTBBbW9kZWwoaW5wdXRfaWRzKQ==",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForSequenceClassification
checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>
tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
input_ids = torch.tensor(ids)
<span class="hljs-comment"># This line will fail.</span>
model(input_ids)`,wrap:!1}}),s=new T({props:{code:"SW5kZXhFcnJvciUzQSUyMERpbWVuc2lvbiUyMG91dCUyMG9mJTIwcmFuZ2UlMjAoZXhwZWN0ZWQlMjB0byUyMGJlJTIwaW4lMjByYW5nZSUyMG9mJTIwJTVCLTElMkMlMjAwJTVEJTJDJTIwYnV0JTIwZ290JTIwMSk=",highlighted:'IndexError: Dimension out of <span class="hljs-built_in">range</span> (expected to be <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span> of [-<span class="hljs-number">1</span>, <span class="hljs-number">0</span>], but got <span class="hljs-number">1</span>)',wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function ve(o){let e,a,s,r;return e=new T({props:{code:"dG9rZW5pemVkX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIpJTBBcHJpbnQodG9rZW5pemVkX2lucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCk=",highlighted:`tokenized_inputs = tokenizer(sequence, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
<span class="hljs-built_in">print</span>(tokenized_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])`,wrap:!1}}),s=new T({props:{code:"JTNDdGYuVGVuc29yJTNBJTIwc2hhcGUlM0QoMSUyQyUyMDE2KSUyQyUyMGR0eXBlJTNEaW50MzIlMkMlMjBudW1weSUzRCUwQWFycmF5KCU1QiU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjAxMDA1JTJDJTIwJTIwMjMxMCUyQyUyMCUyMDIwNDIlMkMlMjAlMjAzNDAzJTJDJTIwJTIwMjAwNSUyQyUyMCUyMDEwMzclMkMlMjAxNzY2MiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDEyMTcyJTJDJTIwJTIwMjYwNyUyQyUyMCUyMDIwMjYlMkMlMjAlMjAyODc4JTJDJTIwJTIwMjE2NiUyQyUyMCUyMDEwMTIlMkMlMjAlMjAlMjAxMDIlNUQlNUQlMkMlMjBkdHlwZSUzRGludDMyKSUzRQ==",highlighted:`&lt;tf.Tensor: shape=(<span class="hljs-number">1</span>, <span class="hljs-number">16</span>), dtype=int32, numpy=
array([[ <span class="hljs-number">101</span>, <span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>,
<span class="hljs-number">12172</span>, <span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>]], dtype=int32)&gt;`,wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function Be(o){let e,a,s,r;return e=new T({props:{code:"dG9rZW5pemVkX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBcHJpbnQodG9rZW5pemVkX2lucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCk=",highlighted:`tokenized_inputs = tokenizer(sequence, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
<span class="hljs-built_in">print</span>(tokenized_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])`,wrap:!1}}),s=new T({props:{code:"dGVuc29yKCU1QiU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjAxMDA1JTJDJTIwJTIwMjMxMCUyQyUyMCUyMDIwNDIlMkMlMjAlMjAzNDAzJTJDJTIwJTIwMjAwNSUyQyUyMCUyMDEwMzclMkMlMjAxNzY2MiUyQyUyMDEyMTcyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjYwNyUyQyUyMCUyMDIwMjYlMkMlMjAlMjAyODc4JTJDJTIwJTIwMjE2NiUyQyUyMCUyMDEwMTIlMkMlMjAlMjAlMjAxMDIlNUQlNUQp",highlighted:`tensor([[ <span class="hljs-number">101</span>, <span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>, <span class="hljs-number">12172</span>,
<span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>]])`,wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function De(o){let e,a;return e=new T({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIudG9rZW5pemUoc2VxdWVuY2UpJTBBaWRzJTIwJTNEJTIwdG9rZW5pemVyLmNvbnZlcnRfdG9rZW5zX3RvX2lkcyh0b2tlbnMpJTBBJTBBaW5wdXRfaWRzJTIwJTNEJTIwdGYuY29uc3RhbnQoJTVCaWRzJTVEKSUwQXByaW50KCUyMklucHV0JTIwSURzJTNBJTIyJTJDJTIwaW5wdXRfaWRzKSUwQSUwQW91dHB1dCUyMCUzRCUyMG1vZGVsKGlucHV0X2lkcyklMEFwcmludCglMjJMb2dpdHMlM0ElMjIlMkMlMjBvdXRwdXQubG9naXRzKQ==",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForSequenceClassification
checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>
tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
input_ids = tf.constant([ids])
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Input IDs:&quot;</span>, input_ids)
output = model(input_ids)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Logits:&quot;</span>, output.logits)`,wrap:!1}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function Fe(o){let e,a;return e=new T({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEFzZXF1ZW5jZSUyMCUzRCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEElMEFpbnB1dF9pZHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTVCaWRzJTVEKSUwQXByaW50KCUyMklucHV0JTIwSURzJTNBJTIyJTJDJTIwaW5wdXRfaWRzKSUwQSUwQW91dHB1dCUyMCUzRCUyMG1vZGVsKGlucHV0X2lkcyklMEFwcmludCglMjJMb2dpdHMlM0ElMjIlMkMlMjBvdXRwdXQubG9naXRzKQ==",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForSequenceClassification
checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>
tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
input_ids = torch.tensor([ids])
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Input IDs:&quot;</span>, input_ids)
output = model(input_ids)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Logits:&quot;</span>, output.logits)`,wrap:!1}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function xe(o){let e,a;return e=new T({props:{code:"SW5wdXQlMjBJRHMlM0ElMjB0Zi5UZW5zb3IoJTBBJTVCJTVCJTIwMTA0NSUyMCUyMDEwMDUlMjAlMjAyMzEwJTIwJTIwMjA0MiUyMCUyMDM0MDMlMjAlMjAyMDA1JTIwJTIwMTAzNyUyMDE3NjYyJTIwMTIxNzIlMjAlMjAyNjA3JTIwJTIwMjAyNiUyMCUyMDI4NzglMEElMjAlMjAlMjAyMTY2JTIwJTIwMTAxMiU1RCU1RCUyQyUyMHNoYXBlJTNEKDElMkMlMjAxNCklMkMlMjBkdHlwZSUzRGludDMyKSUwQUxvZ2l0cyUzQSUyMHRmLlRlbnNvciglNUIlNUItMi43Mjc2MjA4JTIwJTIwMi44Nzg5Mzc3JTVEJTVEJTJDJTIwc2hhcGUlM0QoMSUyQyUyMDIpJTJDJTIwZHR5cGUlM0RmbG9hdDMyKQ==",highlighted:`Input IDs: tf.Tensor(
[[ <span class="hljs-number">1045</span> <span class="hljs-number">1005</span> <span class="hljs-number">2310</span> <span class="hljs-number">2042</span> <span class="hljs-number">3403</span> <span class="hljs-number">2005</span> <span class="hljs-number">1037</span> <span class="hljs-number">17662</span> <span class="hljs-number">12172</span> <span class="hljs-number">2607</span> <span class="hljs-number">2026</span> <span class="hljs-number">2878</span>
<span class="hljs-number">2166</span> <span class="hljs-number">1012</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">14</span>), dtype=int32)
Logits: tf.Tensor([[-<span class="hljs-number">2.7276208</span> <span class="hljs-number">2.8789377</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function He(o){let e,a;return e=new T({props:{code:"SW5wdXQlMjBJRHMlM0ElMjAlNUIlNUIlMjAxMDQ1JTJDJTIwJTIwMTAwNSUyQyUyMCUyMDIzMTAlMkMlMjAlMjAyMDQyJTJDJTIwJTIwMzQwMyUyQyUyMCUyMDIwMDUlMkMlMjAlMjAxMDM3JTJDJTIwMTc2NjIlMkMlMjAxMjE3MiUyQyUyMCUyMDI2MDclMkMlMjAyMDI2JTJDJTIwJTIwMjg3OCUyQyUyMCUyMDIxNjYlMkMlMjAlMjAxMDEyJTVEJTVEJTBBTG9naXRzJTNBJTIwJTVCJTVCLTIuNzI3NiUyQyUyMCUyMDIuODc4OSU1RCU1RA==",highlighted:`Input IDs: [[ <span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>, <span class="hljs-number">12172</span>, <span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>]]
Logits: [[-<span class="hljs-number">2.7276</span>, <span class="hljs-number">2.8789</span>]]`,wrap:!1}}),{c(){b(e.$$.fragment)},l(s){j(e.$$.fragment,s)},m(s,r){y(e,s,r),a=!0},i(s){a||(m(e.$$.fragment,s),a=!0)},o(s){c(e.$$.fragment,s),a=!1},d(s){f(e,s)}}}function Se(o){let e,a="✏️ <strong>試してみよう!</strong> この <code>batch_ids</code> をテンソルに変換し、モデルに入力してみましょう。前と同じロジット(モデル出力)が得られることを確認してください(ただし、二重になっていることに注意してください)。";return{c(){e=d("p"),e.innerHTML=a},l(s){e=J(s,"P",{"data-svelte-h":!0}),w(e)!=="svelte-9x4xeh"&&(e.innerHTML=a)},m(s,r){M(s,e,r)},p:ke,d(s){s&&p(e)}}}function Ye(o){let e,a,s,r;return e=new T({props:{code:"bW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UxX2lkcyUyMCUzRCUyMCU1QiU1QjIwMCUyQyUyMDIwMCUyQyUyMDIwMCU1RCU1RCUwQXNlcXVlbmNlMl9pZHMlMjAlM0QlMjAlNUIlNUIyMDAlMkMlMjAyMDAlNUQlNUQlMEFiYXRjaGVkX2lkcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCU1QjIwMCUyQyUyMDIwMCUyQyUyMDIwMCU1RCUyQyUwQSUyMCUyMCUyMCUyMCU1QjIwMCUyQyUyMDIwMCUyQyUyMHRva2VuaXplci5wYWRfdG9rZW5faWQlNUQlMkMlMEElNUQlMEElMEFwcmludChtb2RlbCh0Zi5jb25zdGFudChzZXF1ZW5jZTFfaWRzKSkubG9naXRzKSUwQXByaW50KG1vZGVsKHRmLmNvbnN0YW50KHNlcXVlbmNlMl9pZHMpKS5sb2dpdHMpJTBBcHJpbnQobW9kZWwodGYuY29uc3RhbnQoYmF0Y2hlZF9pZHMpKS5sb2dpdHMp",highlighted:`model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
sequence1_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
sequence2_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
batched_ids = [
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]
<span class="hljs-built_in">print</span>(model(tf.constant(sequence1_ids)).logits)
<span class="hljs-built_in">print</span>(model(tf.constant(sequence2_ids)).logits)
<span class="hljs-built_in">print</span>(model(tf.constant(batched_ids)).logits)`,wrap:!1}}),s=new T({props:{code:"dGYuVGVuc29yKCU1QiU1QiUyMDEuNTY5MzY3OCUyMC0xLjM4OTQ1ODElNUQlNUQlMkMlMjBzaGFwZSUzRCgxJTJDJTIwMiklMkMlMjBkdHlwZSUzRGZsb2F0MzIpJTBBdGYuVGVuc29yKCU1QiU1QiUyMDAuNTgwMzAwNSUyMCUyMC0wLjQxMjUyNDI4JTVEJTVEJTJDJTIwc2hhcGUlM0QoMSUyQyUyMDIpJTJDJTIwZHR5cGUlM0RmbG9hdDMyKSUwQXRmLlRlbnNvciglMEElNUIlNUIlMjAxLjU2OTM2ODElMjAtMS4zODk0NTgyJTVEJTBBJTIwJTVCJTIwMS4zMzczNDg2JTIwLTEuMjE2MzE5MyU1RCU1RCUyQyUyMHNoYXBlJTNEKDIlMkMlMjAyKSUyQyUyMGR0eXBlJTNEZmxvYXQzMik=",highlighted:`tf.Tensor([[ <span class="hljs-number">1.5693678</span> -<span class="hljs-number">1.3894581</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>), dtype=float32)
tf.Tensor([[ <span class="hljs-number">0.5803005</span> -<span class="hljs-number">0.41252428</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>), dtype=float32)
tf.Tensor(
[[ <span class="hljs-number">1.5693681</span> -<span class="hljs-number">1.3894582</span>]
[ <span class="hljs-number">1.3373486</span> -<span class="hljs-number">1.2163193</span>]], shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function qe(o){let e,a,s,r;return e=new T({props:{code:"bW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQSUwQXNlcXVlbmNlMV9pZHMlMjAlM0QlMjAlNUIlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlNUQlMEFzZXF1ZW5jZTJfaWRzJTIwJTNEJTIwJTVCJTVCMjAwJTJDJTIwMjAwJTVEJTVEJTBBYmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjB0b2tlbml6ZXIucGFkX3Rva2VuX2lkJTVEJTJDJTBBJTVEJTBBJTBBcHJpbnQobW9kZWwodG9yY2gudGVuc29yKHNlcXVlbmNlMV9pZHMpKS5sb2dpdHMpJTBBcHJpbnQobW9kZWwodG9yY2gudGVuc29yKHNlcXVlbmNlMl9pZHMpKS5sb2dpdHMpJTBBcHJpbnQobW9kZWwodG9yY2gudGVuc29yKGJhdGNoZWRfaWRzKSkubG9naXRzKQ==",highlighted:`model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
sequence1_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
sequence2_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
batched_ids = [
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]
<span class="hljs-built_in">print</span>(model(torch.tensor(sequence1_ids)).logits)
<span class="hljs-built_in">print</span>(model(torch.tensor(sequence2_ids)).logits)
<span class="hljs-built_in">print</span>(model(torch.tensor(batched_ids)).logits)`,wrap:!1}}),s=new T({props:{code:"dGVuc29yKCU1QiU1QiUyMDEuNTY5NCUyQyUyMC0xLjM4OTUlNUQlNUQlMkMlMjBncmFkX2ZuJTNEJTNDQWRkbW1CYWNrd2FyZCUzRSklMEF0ZW5zb3IoJTVCJTVCJTIwMC41ODAzJTJDJTIwLTAuNDEyNSU1RCU1RCUyQyUyMGdyYWRfZm4lM0QlM0NBZGRtbUJhY2t3YXJkJTNFKSUwQXRlbnNvciglNUIlNUIlMjAxLjU2OTQlMkMlMjAtMS4zODk1JTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwMS4zMzczJTJDJTIwLTEuMjE2MyU1RCU1RCUyQyUyMGdyYWRfZm4lM0QlM0NBZGRtbUJhY2t3YXJkJTNFKQ==",highlighted:`tensor([[ <span class="hljs-number">1.5694</span>, -<span class="hljs-number">1.3895</span>]], grad_fn=&lt;AddmmBackward&gt;)
tensor([[ <span class="hljs-number">0.5803</span>, -<span class="hljs-number">0.4125</span>]], grad_fn=&lt;AddmmBackward&gt;)
tensor([[ <span class="hljs-number">1.5694</span>, -<span class="hljs-number">1.3895</span>],
[ <span class="hljs-number">1.3373</span>, -<span class="hljs-number">1.2163</span>]], grad_fn=&lt;AddmmBackward&gt;)`,wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function Le(o){let e,a,s,r;return e=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjB0b2tlbml6ZXIucGFkX3Rva2VuX2lkJTVEJTJDJTBBJTVEJTBBJTBBYXR0ZW50aW9uX21hc2slMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDAlNUQlMkMlMEElNUQlMEElMEFvdXRwdXRzJTIwJTNEJTIwbW9kZWwodGYuY29uc3RhbnQoYmF0Y2hlZF9pZHMpJTJDJTIwYXR0ZW50aW9uX21hc2slM0R0Zi5jb25zdGFudChhdHRlbnRpb25fbWFzaykpJTBBcHJpbnQob3V0cHV0cy5sb2dpdHMp",highlighted:`batched_ids = [
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]
attention_mask = [
[<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>],
[<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>],
]
outputs = model(tf.constant(batched_ids), attention_mask=tf.constant(attention_mask))
<span class="hljs-built_in">print</span>(outputs.logits)`,wrap:!1}}),s=new T({props:{code:"dGYuVGVuc29yKCUwQSU1QiU1QiUyMDEuNTY5MzY4MSUyMCUyMC0xLjM4OTQ1ODIlMjAlNUQlMEElMjAlNUIlMjAwLjU4MDMwMjElMjAlMjAtMC40MTI1MjU4NiU1RCU1RCUyQyUyMHNoYXBlJTNEKDIlMkMlMjAyKSUyQyUyMGR0eXBlJTNEZmxvYXQzMik=",highlighted:`tf.Tensor(
[[ <span class="hljs-number">1.5693681</span> -<span class="hljs-number">1.3894582</span> ]
[ <span class="hljs-number">0.5803021</span> -<span class="hljs-number">0.41252586</span>]], shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function Ke(o){let e,a,s,r;return e=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjB0b2tlbml6ZXIucGFkX3Rva2VuX2lkJTVEJTJDJTBBJTVEJTBBJTBBYXR0ZW50aW9uX21hc2slMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDAlNUQlMkMlMEElNUQlMEElMEFvdXRwdXRzJTIwJTNEJTIwbW9kZWwodG9yY2gudGVuc29yKGJhdGNoZWRfaWRzKSUyQyUyMGF0dGVudGlvbl9tYXNrJTNEdG9yY2gudGVuc29yKGF0dGVudGlvbl9tYXNrKSklMEFwcmludChvdXRwdXRzLmxvZ2l0cyk=",highlighted:`batched_ids = [
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]
attention_mask = [
[<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>],
[<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>],
]
outputs = model(torch.tensor(batched_ids), attention_mask=torch.tensor(attention_mask))
<span class="hljs-built_in">print</span>(outputs.logits)`,wrap:!1}}),s=new T({props:{code:"dGVuc29yKCU1QiU1QiUyMDEuNTY5NCUyQyUyMC0xLjM4OTUlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjAwLjU4MDMlMkMlMjAtMC40MTI1JTVEJTVEJTJDJTIwZ3JhZF9mbiUzRCUzQ0FkZG1tQmFja3dhcmQlM0Up",highlighted:`tensor([[ <span class="hljs-number">1.5694</span>, -<span class="hljs-number">1.3895</span>],
[ <span class="hljs-number">0.5803</span>, -<span class="hljs-number">0.4125</span>]], grad_fn=&lt;AddmmBackward&gt;)`,wrap:!1}}),{c(){b(e.$$.fragment),a=i(),b(s.$$.fragment)},l(n){j(e.$$.fragment,n),a=u(n),j(s.$$.fragment,n)},m(n,U){y(e,n,U),M(n,a,U),y(s,n,U),r=!0},i(n){r||(m(e.$$.fragment,n),m(s.$$.fragment,n),r=!0)},o(n){c(e.$$.fragment,n),c(s.$$.fragment,n),r=!1},d(n){n&&p(a),f(e,n),f(s,n)}}}function Pe(o){let e,a="✏️ <strong>試してみよう!</strong> セクション2で使用した2つの文 (“I’ve been waiting for a HuggingFace course my whole life.” と “I hate this so much!“) を手動でトークン化してみましょう。そしてこれらをモデルに入力し、セクション2で得られたロジットと同じ結果となることを確認してみましょう。次に、パディングトークンを使用してこれらをバッチ処理し、適切なアテンションマスクを作成してみましょう。また同様にモデルに入力した際、セクション2で得られた結果と同じものになることを確認してみましょう。";return{c(){e=d("p"),e.innerHTML=a},l(s){e=J(s,"P",{"data-svelte-h":!0}),w(e)!=="svelte-1qypiv0"&&(e.innerHTML=a)},m(s,r){M(s,e,r)},p:ke,d(s){s&&p(e)}}}function Oe(o){let e,a,s,r,n,U,D,vl,h,k,Ql,_,$,Nl,F,Ns="前のセクションでは、最も単純な使用例である、単一の短い系列(テキスト)に対して推論を行う方法を見てきました。しかし、これについて以下のような疑問をお持ちの方もいるかもしれません。",Bl,x,gs="<li>複数の系列をどのように処理するのか?</li> <li>長さの異なる複数の系列をどのように処理するのか?</li> <li>モデルがうまく機能するためには、単語のインデックスだけが入力として必要なのか?</li> <li>系列が長すぎてしまうということはあるのか?</li>",Dl,H,Vs="これらの疑問について、実際はどのような問題があるのか、そして🤗 Transformers APIを使ってどのように解決できるのかを見ていきましょう。",Fl,S,xl,Y,Ws="以前のエクササイズで、系列が数値のリストに変換される方法を見てきました。この数値列をテンソルに変換し、モデルに入力してみましょう。",Hl,I,A,gl,q,Es="おっと!「セクション2のパイプラインの手順に従ったのに、なぜ失敗したのか?」と思われるかもしれません。",Sl,L,zs="この問題はモデルに単一の系列を入力しようとしたために発生しました。🤗 Transformersモデルは、デフォルトでは複数の系列を入力として受け付けます。ここでは、<code>sequence</code>に対してトークナイザを適用したときに、トークナイザがその背後で行ったすべての処理を行おうとしました。しかし、もう少し詳しく見てみると、トークナイザは入力IDのリストをテンソルに変換するだけでなく、それに対して次元を追加していることがわかります。",Yl,Z,C,Vl,K,Rs="それでは次元を追加して再度試してみましょう。",ql,Q,N,Wl,P,Gs="ここで入力IDと結果のロジット(モデルの出力)を見てみましょう。",Ll,g,V,El,O,Xs="<em>バッチ処理</em>とは、複数の系列をまとめてモデルに入力することです。系列が1つしかない場合でも、バッチを構築することができます。",Kl,ll,Pl,sl,vs="これは2つの同じ系列からなるバッチとなっています。",Ol,G,ls,el,Bs="バッチ処理により、複数の系列をモデルに入力できるようになります。単一の系列でバッチを構築するのと同じように、簡単に複数の系列を使用することができます。ただし、ここで1つ問題があります。2つ以上の系列をバッチ処理する場合、系列の長さがそれぞれ異なる場合があります。これまでテンソルを扱ったことがある場合は、テンソルの形状は長方形である必要があることをご存知なのではないでしょうか。従って、異なる長さの系列の入力IDリストを直接テンソルに変換することはできません。この問題を回避するための方法として、入力を<em>パディング</em>することが一般的です。",ss,nl,es,tl,Ds="以下の二重のリストはテンソルには変換できません。",ns,al,ts,pl,Fs="この問題を回避するために、<em>パディング</em>を使用して、テンソルの形状を長方形にしてみましょう。パディングは、<em>パディングトークン</em>と呼ばれる特別な単語を短い系列に対して追加することで、すべての系列の長さを同じにします。例えば、10語の系列が10個、20語の系列が1個ある場合、パディングにより、すべての系列の長さが20語になります。上記の例では、結果として得られるテンソルは次のようになります。",as,Ml,ps,rl,xs="パティングトークンのIDは <code>tokenizer.pad_token_id</code> で見つけることができます。それでは、これを使って2つの系列を個別にモデルに入力する場合と、バッチ処理した場合の結果を比較してみましょう。",Ms,W,E,zl,il,Hs="バッチ処理した予測のロジットについて何か違いがあるようです。2行目は2つ目の系列のロジットと同じであるべきですが、完全に異なる値となってしまっています!",rs,ul,Ss="これは、Transformerモデルの代表的な特徴であるアテンション層が、それぞれのトークンに対して<em>コンテクスト化</em>を行っていることに起因します。アテンション層は、系列のすべてのトークンに注意(アテンション)を向けるため、パディングトークンも考慮の対象として扱います。異なる長さの系列を個別にモデルに入力する場合と、同じ系列をバッチ処理した場合の両方で同じ結果を得るためには、アテンション層にパディングトークンを無視するように指示する必要があります。これは、アテンションマスクを使用することで実現できます。",is,cl,us,ml,Ys="<em>アテンションマスク</em>とは入力IDのテンソルと全く同じ形をしたテンソルのことで、0と1で構成されています。1は対応するトークンに注意を向けることを示し、0は対応するトークンに注意を向けないこと(つまり、アテンション層に無視されること)を示します。",cs,ol,qs="前の例に対して、アテンションマスクを追加してみましょう。",ms,z,R,Rl,bl,Ls="これで、バッチ内の2つ目の系列について同じロジットが得られました。",os,jl,Ks="2つ目の系列の最後の値がパディングIDであることに注目してください。これは、アテンションマスクの0の値となっています。",bs,X,js,yl,ys,fl,Ps="トランスフォーマーモデルでは、モデルに入力できる系列の長さに制限があります。ほとんどのモデルは512トークンまたは1024トークンの系列を処理できますが、これより長い系列を処理しようとするとクラッシュしてしまいます。この問題に対しては、2つの解決策があります。",fs,Ul,Os="<li>長い系列を処理できるモデルを使用する</li> <li>系列を途中で区切って短くする</li>",Us,dl,le='処理できる系列長はモデルによって異なり、非常に長い系列の処理に特化したモデルも存在します。<a href="https://huggingface.co/transformers/model_doc/longformer.html" rel="nofollow">Longformer</a> はその一例です。また、<a href="https://huggingface.co/transformers/model_doc/led.html" rel="nofollow">LED</a> も長い系列を処理できるモデルです。非常に長い系列を処理する必要があるタスクに取り組んでいる場合は、これらのモデルを見てみて下さい。',ds,Jl,se="もう1つの手法として、<code>max_sequence_length</code> パラメータを指定して系列を途中で区切ることをお勧めします。",Js,wl,ws,Tl,Ts,Gl,hs;n=new ge({props:{fw:o[0]}}),D=new Xl({props:{title:"複数系列の処理",local:"複数系列の処理",headingTag:"h1"}});const ee=[Ee,We],hl=[];function ne(l,t){return l[0]==="pt"?0:1}h=ne(o),k=hl[h]=ee[h](o);const te=[Re,ze],kl=[];function ae(l,t){return l[0]==="pt"?0:1}_=ae(o),$=kl[_]=te[_](o),S=new Xl({props:{title:"モデルへのバッチ入力",local:"モデルへのバッチ入力",headingTag:"h2"}});const pe=[Xe,Ge],_l=[];function Me(l,t){return l[0]==="pt"?0:1}I=Me(o),A=_l[I]=pe[I](o);const re=[Be,ve],$l=[];function ie(l,t){return l[0]==="pt"?0:1}Z=ie(o),C=$l[Z]=re[Z](o);const ue=[Fe,De],Il=[];function ce(l,t){return l[0]==="pt"?0:1}Q=ce(o),N=Il[Q]=ue[Q](o);const me=[He,xe],Al=[];function oe(l,t){return l[0]==="pt"?0:1}g=oe(o),V=Al[g]=me[g](o),ll=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUJpZHMlMkMlMjBpZHMlNUQ=",highlighted:'<span class="hljs-attr">batched_ids</span> = [ids, ids]',wrap:!1}}),G=new he({props:{$$slots:{default:[Se]},$$scope:{ctx:o}}}),nl=new Xl({props:{title:"入力のパディング",local:"入力のパディング",headingTag:"h2"}}),al=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlNUQlMEElNUQ=",highlighted:`batched_ids = [
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>]
]`,wrap:!1}}),Ml=new T({props:{code:"cGFkZGluZ19pZCUyMCUzRCUyMDEwMCUwQSUwQWJhdGNoZWRfaWRzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTVCMjAwJTJDJTIwMjAwJTJDJTIwMjAwJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTVCMjAwJTJDJTIwMjAwJTJDJTIwcGFkZGluZ19pZCU1RCUyQyUwQSU1RA==",highlighted:`padding_id = <span class="hljs-number">100</span>
batched_ids = [
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, padding_id],
]`,wrap:!1}});const be=[qe,Ye],Zl=[];function je(l,t){return l[0]==="pt"?0:1}W=je(o),E=Zl[W]=be[W](o),cl=new Xl({props:{title:"アテンションマスク",local:"アテンションマスク",headingTag:"h2"}});const ye=[Ke,Le],Cl=[];function fe(l,t){return l[0]==="pt"?0:1}return z=fe(o),R=Cl[z]=ye[z](o),X=new he({props:{$$slots:{default:[Pe]},$$scope:{ctx:o}}}),yl=new Xl({props:{title:"より長い系列",local:"より長い系列",headingTag:"h2"}}),wl=new T({props:{code:"c2VxdWVuY2UlMjAlM0QlMjBzZXF1ZW5jZSU1QiUzQW1heF9zZXF1ZW5jZV9sZW5ndGglNUQ=",highlighted:"sequence = sequence[:max_sequence_length]",wrap:!1}}),Tl=new Ve({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ja/chapter2/5.mdx"}}),{c(){e=d("meta"),a=i(),s=d("p"),r=i(),b(n.$$.fragment),U=i(),b(D.$$.fragment),vl=i(),k.c(),Ql=i(),$.c(),Nl=i(),F=d("p"),F.textContent=Ns,Bl=i(),x=d("ul"),x.innerHTML=gs,Dl=i(),H=d("p"),H.textContent=Vs,Fl=i(),b(S.$$.fragment),xl=i(),Y=d("p"),Y.textContent=Ws,Hl=i(),A.c(),gl=i(),q=d("p"),q.textContent=Es,Sl=i(),L=d("p"),L.innerHTML=zs,Yl=i(),C.c(),Vl=i(),K=d("p"),K.textContent=Rs,ql=i(),N.c(),Wl=i(),P=d("p"),P.textContent=Gs,Ll=i(),V.c(),El=i(),O=d("p"),O.innerHTML=Xs,Kl=i(),b(ll.$$.fragment),Pl=i(),sl=d("p"),sl.textContent=vs,Ol=i(),b(G.$$.fragment),ls=i(),el=d("p"),el.innerHTML=Bs,ss=i(),b(nl.$$.fragment),es=i(),tl=d("p"),tl.textContent=Ds,ns=i(),b(al.$$.fragment),ts=i(),pl=d("p"),pl.innerHTML=Fs,as=i(),b(Ml.$$.fragment),ps=i(),rl=d("p"),rl.innerHTML=xs,Ms=i(),E.c(),zl=i(),il=d("p"),il.textContent=Hs,rs=i(),ul=d("p"),ul.innerHTML=Ss,is=i(),b(cl.$$.fragment),us=i(),ml=d("p"),ml.innerHTML=Ys,cs=i(),ol=d("p"),ol.textContent=qs,ms=i(),R.c(),Rl=i(),bl=d("p"),bl.textContent=Ls,os=i(),jl=d("p"),jl.textContent=Ks,bs=i(),b(X.$$.fragment),js=i(),b(yl.$$.fragment),ys=i(),fl=d("p"),fl.textContent=Ps,fs=i(),Ul=d("ul"),Ul.innerHTML=Os,Us=i(),dl=d("p"),dl.innerHTML=le,ds=i(),Jl=d("p"),Jl.innerHTML=se,Js=i(),b(wl.$$.fragment),ws=i(),b(Tl.$$.fragment),Ts=i(),Gl=d("p"),this.h()},l(l){const t=Qe("svelte-u9bgzb",document.head);e=J(t,"META",{name:!0,content:!0}),t.forEach(p),a=u(l),s=J(l,"P",{}),we(s).forEach(p),r=u(l),j(n.$$.fragment,l),U=u(l),j(D.$$.fragment,l),vl=u(l),k.l(l),Ql=u(l),$.l(l),Nl=u(l),F=J(l,"P",{"data-svelte-h":!0}),w(F)!=="svelte-7v4t1y"&&(F.textContent=Ns),Bl=u(l),x=J(l,"UL",{"data-svelte-h":!0}),w(x)!=="svelte-1p3yz9o"&&(x.innerHTML=gs),Dl=u(l),H=J(l,"P",{"data-svelte-h":!0}),w(H)!=="svelte-1w1urti"&&(H.textContent=Vs),Fl=u(l),j(S.$$.fragment,l),xl=u(l),Y=J(l,"P",{"data-svelte-h":!0}),w(Y)!=="svelte-1hd21ea"&&(Y.textContent=Ws),Hl=u(l),A.l(l),gl=u(l),q=J(l,"P",{"data-svelte-h":!0}),w(q)!=="svelte-1a2svhu"&&(q.textContent=Es),Sl=u(l),L=J(l,"P",{"data-svelte-h":!0}),w(L)!=="svelte-azjz8e"&&(L.innerHTML=zs),Yl=u(l),C.l(l),Vl=u(l),K=J(l,"P",{"data-svelte-h":!0}),w(K)!=="svelte-149xre0"&&(K.textContent=Rs),ql=u(l),N.l(l),Wl=u(l),P=J(l,"P",{"data-svelte-h":!0}),w(P)!=="svelte-11jxpoi"&&(P.textContent=Gs),Ll=u(l),V.l(l),El=u(l),O=J(l,"P",{"data-svelte-h":!0}),w(O)!=="svelte-1mxypka"&&(O.innerHTML=Xs),Kl=u(l),j(ll.$$.fragment,l),Pl=u(l),sl=J(l,"P",{"data-svelte-h":!0}),w(sl)!=="svelte-1m7nfxx"&&(sl.textContent=vs),Ol=u(l),j(G.$$.fragment,l),ls=u(l),el=J(l,"P",{"data-svelte-h":!0}),w(el)!=="svelte-3wuuip"&&(el.innerHTML=Bs),ss=u(l),j(nl.$$.fragment,l),es=u(l),tl=J(l,"P",{"data-svelte-h":!0}),w(tl)!=="svelte-923dw6"&&(tl.textContent=Ds),ns=u(l),j(al.$$.fragment,l),ts=u(l),pl=J(l,"P",{"data-svelte-h":!0}),w(pl)!=="svelte-am2sgk"&&(pl.innerHTML=Fs),as=u(l),j(Ml.$$.fragment,l),ps=u(l),rl=J(l,"P",{"data-svelte-h":!0}),w(rl)!=="svelte-3wvkm1"&&(rl.innerHTML=xs),Ms=u(l),E.l(l),zl=u(l),il=J(l,"P",{"data-svelte-h":!0}),w(il)!=="svelte-1sgc0xw"&&(il.textContent=Hs),rs=u(l),ul=J(l,"P",{"data-svelte-h":!0}),w(ul)!=="svelte-v9yt9b"&&(ul.innerHTML=Ss),is=u(l),j(cl.$$.fragment,l),us=u(l),ml=J(l,"P",{"data-svelte-h":!0}),w(ml)!=="svelte-rwa9b"&&(ml.innerHTML=Ys),cs=u(l),ol=J(l,"P",{"data-svelte-h":!0}),w(ol)!=="svelte-15s4fgg"&&(ol.textContent=qs),ms=u(l),R.l(l),Rl=u(l),bl=J(l,"P",{"data-svelte-h":!0}),w(bl)!=="svelte-wo1qtz"&&(bl.textContent=Ls),os=u(l),jl=J(l,"P",{"data-svelte-h":!0}),w(jl)!=="svelte-1oiv82n"&&(jl.textContent=Ks),bs=u(l),j(X.$$.fragment,l),js=u(l),j(yl.$$.fragment,l),ys=u(l),fl=J(l,"P",{"data-svelte-h":!0}),w(fl)!=="svelte-ku9ozq"&&(fl.textContent=Ps),fs=u(l),Ul=J(l,"UL",{"data-svelte-h":!0}),w(Ul)!=="svelte-1ygsmwb"&&(Ul.innerHTML=Os),Us=u(l),dl=J(l,"P",{"data-svelte-h":!0}),w(dl)!=="svelte-18xv06x"&&(dl.innerHTML=le),ds=u(l),Jl=J(l,"P",{"data-svelte-h":!0}),w(Jl)!=="svelte-1tc1uz0"&&(Jl.innerHTML=se),Js=u(l),j(wl.$$.fragment,l),ws=u(l),j(Tl.$$.fragment,l),Ts=u(l),Gl=J(l,"P",{}),we(Gl).forEach(p),this.h()},h(){Te(e,"name","hf:doc:metadata"),Te(e,"content",ln)},m(l,t){Ne(document.head,e),M(l,a,t),M(l,s,t),M(l,r,t),y(n,l,t),M(l,U,t),y(D,l,t),M(l,vl,t),hl[h].m(l,t),M(l,Ql,t),kl[_].m(l,t),M(l,Nl,t),M(l,F,t),M(l,Bl,t),M(l,x,t),M(l,Dl,t),M(l,H,t),M(l,Fl,t),y(S,l,t),M(l,xl,t),M(l,Y,t),M(l,Hl,t),_l[I].m(l,t),M(l,gl,t),M(l,q,t),M(l,Sl,t),M(l,L,t),M(l,Yl,t),$l[Z].m(l,t),M(l,Vl,t),M(l,K,t),M(l,ql,t),Il[Q].m(l,t),M(l,Wl,t),M(l,P,t),M(l,Ll,t),Al[g].m(l,t),M(l,El,t),M(l,O,t),M(l,Kl,t),y(ll,l,t),M(l,Pl,t),M(l,sl,t),M(l,Ol,t),y(G,l,t),M(l,ls,t),M(l,el,t),M(l,ss,t),y(nl,l,t),M(l,es,t),M(l,tl,t),M(l,ns,t),y(al,l,t),M(l,ts,t),M(l,pl,t),M(l,as,t),y(Ml,l,t),M(l,ps,t),M(l,rl,t),M(l,Ms,t),Zl[W].m(l,t),M(l,zl,t),M(l,il,t),M(l,rs,t),M(l,ul,t),M(l,is,t),y(cl,l,t),M(l,us,t),M(l,ml,t),M(l,cs,t),M(l,ol,t),M(l,ms,t),Cl[z].m(l,t),M(l,Rl,t),M(l,bl,t),M(l,os,t),M(l,jl,t),M(l,bs,t),y(X,l,t),M(l,js,t),y(yl,l,t),M(l,ys,t),M(l,fl,t),M(l,fs,t),M(l,Ul,t),M(l,Us,t),M(l,dl,t),M(l,ds,t),M(l,Jl,t),M(l,Js,t),y(wl,l,t),M(l,ws,t),y(Tl,l,t),M(l,Ts,t),M(l,Gl,t),hs=!0},p(l,[t]){const Ue={};t&1&&(Ue.fw=l[0]),n.$set(Ue);let ks=h;h=ne(l),h!==ks&&(B(),c(hl[ks],1,1,()=>{hl[ks]=null}),v(),k=hl[h],k||(k=hl[h]=ee[h](l),k.c()),m(k,1),k.m(Ql.parentNode,Ql));let _s=_;_=ae(l),_!==_s&&(B(),c(kl[_s],1,1,()=>{kl[_s]=null}),v(),$=kl[_],$||($=kl[_]=te[_](l),$.c()),m($,1),$.m(Nl.parentNode,Nl));let $s=I;I=Me(l),I!==$s&&(B(),c(_l[$s],1,1,()=>{_l[$s]=null}),v(),A=_l[I],A||(A=_l[I]=pe[I](l),A.c()),m(A,1),A.m(gl.parentNode,gl));let Is=Z;Z=ie(l),Z!==Is&&(B(),c($l[Is],1,1,()=>{$l[Is]=null}),v(),C=$l[Z],C||(C=$l[Z]=re[Z](l),C.c()),m(C,1),C.m(Vl.parentNode,Vl));let As=Q;Q=ce(l),Q!==As&&(B(),c(Il[As],1,1,()=>{Il[As]=null}),v(),N=Il[Q],N||(N=Il[Q]=ue[Q](l),N.c()),m(N,1),N.m(Wl.parentNode,Wl));let Zs=g;g=oe(l),g!==Zs&&(B(),c(Al[Zs],1,1,()=>{Al[Zs]=null}),v(),V=Al[g],V||(V=Al[g]=me[g](l),V.c()),m(V,1),V.m(El.parentNode,El));const de={};t&2&&(de.$$scope={dirty:t,ctx:l}),G.$set(de);let Cs=W;W=je(l),W!==Cs&&(B(),c(Zl[Cs],1,1,()=>{Zl[Cs]=null}),v(),E=Zl[W],E||(E=Zl[W]=be[W](l),E.c()),m(E,1),E.m(zl.parentNode,zl));let Qs=z;z=fe(l),z!==Qs&&(B(),c(Cl[Qs],1,1,()=>{Cl[Qs]=null}),v(),R=Cl[z],R||(R=Cl[z]=ye[z](l),R.c()),m(R,1),R.m(Rl.parentNode,Rl));const Je={};t&2&&(Je.$$scope={dirty:t,ctx:l}),X.$set(Je)},i(l){hs||(m(n.$$.fragment,l),m(D.$$.fragment,l),m(k),m($),m(S.$$.fragment,l),m(A),m(C),m(N),m(V),m(ll.$$.fragment,l),m(G.$$.fragment,l),m(nl.$$.fragment,l),m(al.$$.fragment,l),m(Ml.$$.fragment,l),m(E),m(cl.$$.fragment,l),m(R),m(X.$$.fragment,l),m(yl.$$.fragment,l),m(wl.$$.fragment,l),m(Tl.$$.fragment,l),hs=!0)},o(l){c(n.$$.fragment,l),c(D.$$.fragment,l),c(k),c($),c(S.$$.fragment,l),c(A),c(C),c(N),c(V),c(ll.$$.fragment,l),c(G.$$.fragment,l),c(nl.$$.fragment,l),c(al.$$.fragment,l),c(Ml.$$.fragment,l),c(E),c(cl.$$.fragment,l),c(R),c(X.$$.fragment,l),c(yl.$$.fragment,l),c(wl.$$.fragment,l),c(Tl.$$.fragment,l),hs=!1},d(l){l&&(p(a),p(s),p(r),p(U),p(vl),p(Ql),p(Nl),p(F),p(Bl),p(x),p(Dl),p(H),p(Fl),p(xl),p(Y),p(Hl),p(gl),p(q),p(Sl),p(L),p(Yl),p(Vl),p(K),p(ql),p(Wl),p(P),p(Ll),p(El),p(O),p(Kl),p(Pl),p(sl),p(Ol),p(ls),p(el),p(ss),p(es),p(tl),p(ns),p(ts),p(pl),p(as),p(ps),p(rl),p(Ms),p(zl),p(il),p(rs),p(ul),p(is),p(us),p(ml),p(cs),p(ol),p(ms),p(Rl),p(bl),p(os),p(jl),p(bs),p(js),p(ys),p(fl),p(fs),p(Ul),p(Us),p(dl),p(ds),p(Jl),p(Js),p(ws),p(Ts),p(Gl)),p(e),f(n,l),f(D,l),hl[h].d(l),kl[_].d(l),f(S,l),_l[I].d(l),$l[Z].d(l),Il[Q].d(l),Al[g].d(l),f(ll,l),f(G,l),f(nl,l),f(al,l),f(Ml,l),Zl[W].d(l),f(cl,l),Cl[z].d(l),f(X,l),f(yl,l),f(wl,l),f(Tl,l)}}}const ln='{"title":"複数系列の処理","local":"複数系列の処理","sections":[{"title":"モデルへのバッチ入力","local":"モデルへのバッチ入力","sections":[],"depth":2},{"title":"入力のパディング","local":"入力のパディング","sections":[],"depth":2},{"title":"アテンションマスク","local":"アテンションマスク","sections":[],"depth":2},{"title":"より長い系列","local":"より長い系列","sections":[],"depth":2}],"depth":1}';function sn(o,e,a){let s="pt";return Ae(()=>{const r=new URLSearchParams(window.location.search);a(0,s=r.get("fw")||"pt")}),[s]}class cn extends Ze{constructor(e){super(),Ce(this,e,sn,Oe,Ie,{})}}export{cn as component};

Xet Storage Details

Size:
47 kB
·
Xet hash:
7052360adfe7d6ae7ab778dfdc81eb2c6ec25fb6bc13223414053f55494402e3

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.