<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「tf.random.uniform」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/tf-random-uniform/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sun, 11 Jan 2026 07:02:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>「tf.random.uniform」タグの記事一覧Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【TensorFlow】Tensor（テンソル）の作成方法</title>
		<link>https://tech.nkhn37.net/tensorflow-tensor-create-basic/</link>
					<comments>https://tech.nkhn37.net/tensorflow-tensor-create-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Sun, 09 Oct 2022 20:00:00 +0000</pubDate>
				<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[tf.constant]]></category>
		<category><![CDATA[tf.ones]]></category>
		<category><![CDATA[tf.ones_like]]></category>
		<category><![CDATA[tf.random.normal]]></category>
		<category><![CDATA[tf.random.uniform]]></category>
		<category><![CDATA[tf.Variable]]></category>
		<category><![CDATA[tf.zeros]]></category>
		<category><![CDATA[tf.zeros_like]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=5064</guid>

					<description><![CDATA[Googleによって開発されている機械学習ライブラリであるTensorFlowで、Tensor（テンソル）を作成する各種方法を解説します。 Tensorの作成方法 TensorFlowで扱うn次元の多次元配列をTenso [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Googleによって開発されている機械学習ライブラリであるTensorFlowで、<span class="marker"><strong>Tensor（テンソル）</strong></span>を作成する各種方法を解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold">Tensorの作成方法</h2>



<p class="wp-block-paragraph">TensorFlowで扱うn次元の多次元配列を<span class="marker"><strong>Tensor（テンソル）</strong></span>と言います。ディープラーニングでの各種計算はTensorを通して実行されます。以降では、Tensorの作成方法について解説していきます。</p>



<h3 class="wp-block-heading jinr-heading d--bold">定数Tensorの作成 tf.constant</h3>



<h4 class="wp-block-heading jinr-heading d--bold">定数の作成方法</h4>



<p class="wp-block-paragraph">TensorFlowで定数のTensorを作成するには、以下の例のように<span class="marker"><strong>tf.constant</strong></span>を使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# ===== 定数を作成する tf.constant
# 階数0のTensor (scalar)
scalar = tf.constant(10)
print(scalar)
print(scalar.ndim, "\n")

# 階数1のTensor (vector)
vector = tf.constant([1, 2, 3, 4, 5])
print(vector)
print(vector.ndim, "\n")

# 階数2のTensor (matrix)
matrix_2d = tf.constant([[1, 2], [3, 4]])
print(matrix_2d)
print(matrix_2d.ndim, "\n")

# 階数3のTensor (matrix)
matrix_3d = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]])
print(matrix_3d)
print(matrix_3d.ndim, "\n")

# 階数4のTensor (matrix)
matrix_4d = tf.constant(
    [
        [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]],
        [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]],
    ]
)
print(matrix_4d)
print(matrix_4d.ndim)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(10, shape=(), dtype=int32)
0 

tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)
1 

tf.Tensor(
[[1 2]
 [3 4]], shape=(2, 2), dtype=int32)
2 

tf.Tensor(
[[[ 1  2]
  [ 3  4]]

 [[ 5  6]
  [ 7  8]]

 [[ 9 10]
  [11 12]]], shape=(3, 2, 2), dtype=int32)
3 

tf.Tensor(
[[[[ 1  2]
   [ 3  4]]

  [[ 5  6]
   [ 7  8]]

  [[ 9 10]
   [11 12]]]


 [[[ 1  2]
   [ 3  4]]

  [[ 5  6]
   [ 7  8]]

  [[ 9 10]
   [11 12]]]], shape=(2, 3, 2, 2), dtype=int32)
4</pre>



<p class="wp-block-paragraph">Tensorの添え字の組の数のことをTensorの階数と言います。例えば、スカラー(scalar)は階数0のTensor、ベクトル(vector)は階数1のTensor、2次元配列(matrix)は階数2のTensor、n次元配列(matrix)は階数nのTensorというように表現します。</p>



<p class="wp-block-paragraph">上記例では階数4のTensorまでサンプルを作っています。ディープラーニングで扱う画像データは階数4のTensorを使って(データ数, チャンネル数, 縦, 横)※のような軸で扱う場合が多いので、階数4ぐらいまではイメージを持って扱えるようにしておくといいと思います。※各軸の意味はデータセットにより異なる場合があります。</p>



<h4 class="wp-block-heading jinr-heading d--bold">型を指定して作成する</h4>



<p class="wp-block-paragraph">以下の例のように<span class="marker"><strong>dtype</strong></span>引数で指定することで特定の型でTensorを作成することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# dtypeで型を指定して定数を作成する tf.constant
matrix = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)
print(matrix)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[1. 2.]
 [3. 4.]], shape=(2, 2), dtype=float16)</pre>



<p class="wp-block-paragraph">上記の例では、16ビットの浮動小数点を指定してTensorを作成しています。Tensorのデータ型としては、例えば以下のようなものがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>型</th><th>概要</th></tr></thead><tbody><tr><td>tf.float16</td><td>16ビット浮動小数点</td></tr><tr><td>tf.float32</td><td>32ビット浮動小数点</td></tr><tr><td>tf.float64</td><td>64ビット浮動小数点</td></tr><tr><td>tf.int8</td><td>8ビット整数</td></tr><tr><td>tf.int16</td><td>16ビット整数</td></tr><tr><td>tf.int32</td><td>32ビット整数</td></tr><tr><td>tf.int64</td><td>64ビット整数</td></tr><tr><td>tf.uint8</td><td>符号なし8ビット整数</td></tr><tr><td>tf.string</td><td>文字列</td></tr><tr><td>tf.bool</td><td>真偽値</td></tr></tbody></table></figure>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">上記は Tensor のデータ型の一部です。他のデータ型を確認したい方は、<code>tf.dtypes</code> の公式ドキュメントの<a href="https://www.tensorflow.org/api_docs/python/tf/dtypes" target="_blank" rel="noreferrer noopener">こちら</a>を参照してください。</p>
</div>
		</div></section>



<h4 class="wp-block-heading jinr-heading d--bold">定数の要素の値は変更できない</h4>



<p class="wp-block-paragraph">tf.constantで作成した定数テンソルの要素は後で変更できません。以下のようにTypeErrorとなります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

tensor = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)

# 定数は変更できない
tensor[0, 0] = 5
print(tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
TypeError: 'tensorflow.python.framework.ops.EagerTensor' object does not support item assignment</pre>



<p class="wp-block-paragraph">要素を後で変更する必要があるようなケースでは後述するtf.Variableの変数を使用するようにしてください。</p>



<h3 class="wp-block-heading jinr-heading d--bold">変数Tensorの作成 tf.Variable</h3>



<h4 class="wp-block-heading jinr-heading d--bold">変数の作成方法</h4>



<p class="wp-block-paragraph">TensorFlowで変数のTensorを作成するには、以下の例のように<span class="marker"><strong>tf.Variable</strong></span>を使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# ===== 変数を作成する tf.Variable
# 階数0のTensor (scalar)
scalar = tf.Variable(10)
print(scalar, "\n")

# 階数1のTensor (vector)
vector = tf.Variable([1, 2, 3, 4, 5])
print(vector, "\n")

# 階数2のTensor (matrix)
matrix_2d = tf.Variable([[1, 2], [3, 4]])
print(matrix_2d, "\n")

# 階数3のTensor (matrix)
matrix_3d = tf.Variable([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]])
print(matrix_3d, "\n")

# 階数4のTensor (matrix)
matrix_4d = tf.Variable(
    [
        [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]],
        [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]],
    ]
)
print(matrix_4d)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
&lt;tf.Variable 'Variable:0' shape=() dtype=int32, numpy=10> 

&lt;tf.Variable 'Variable:0' shape=(5,) dtype=int32, numpy=array([1, 2, 3, 4, 5])> 

&lt;tf.Variable 'Variable:0' shape=(2, 2) dtype=int32, numpy=
array([[1, 2],
       [3, 4]])> 

&lt;tf.Variable 'Variable:0' shape=(3, 2, 2) dtype=int32, numpy=
array([[[ 1,  2],
        [ 3,  4]],

       [[ 5,  6],
        [ 7,  8]],

       [[ 9, 10],
        [11, 12]]])> 

&lt;tf.Variable 'Variable:0' shape=(2, 3, 2, 2) dtype=int32, numpy=
array([[[[ 1,  2],
         [ 3,  4]],

        [[ 5,  6],
         [ 7,  8]],

        [[ 9, 10],
         [11, 12]]],


       [[[ 1,  2],
         [ 3,  4]],

        [[ 5,  6],
         [ 7,  8]],

        [[ 9, 10],
         [11, 12]]]])></pre>



<p class="wp-block-paragraph">上記のように結果としては、tf.constantと同じような結果となります。tf.constantとの違いとしては、変数なので後述するように値を変更することができる点があります。</p>



<h4 class="wp-block-heading jinr-heading d--bold">変数の値を変更する方法 assign</h4>



<p class="wp-block-paragraph">tf.Variableで作成されたTensorは変数なので値を変更することができます。ただし、以下のように直接変数を変更しようとするとエラーとなります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

tensor = tf.Variable([[1, 2], [3, 4]], dtype=tf.float16)

# 変数は直接は変更できない (TypeError)
tensor[0, 0] = 5</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
TypeError: 'ResourceVariable' object does not support item assignment</pre>



<p class="wp-block-paragraph">そこで、tf.Variableでは以下のように<span class="marker"><strong>assign</strong></span>メソッドを使って値を変更します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

tensor = tf.Variable([[1, 2], [3, 4]], dtype=tf.float16)

# Tensorの値を更新する assign
tensor[0, 0].assign(5)
print(tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
&lt;tf.Variable 'Variable:0' shape=(2, 2) dtype=float16, numpy=
array([[5., 2.],
       [3., 4.]], dtype=float16)></pre>



<p class="wp-block-paragraph">上記のように、Tensorの要素の値を変更できることが分かるかと思います。</p>



<h5 class="wp-block-heading jinr-heading d--bold">【補足】assignはtf.constantには存在しない</h5>



<p class="wp-block-paragraph">tf.Variableは、上記で説明したようにassignで変更することができました。tf.constantでも同じようにassignで変更できるのかなと思われる方もいるかもしれませんが、tf.constantにはassignは定義されていないため以下のようにAttributeErrorとなります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

tensor = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)

# tf.constantにはtf.Variableにあるassignは存在しない (AttributeError)
tensor[0, 0].assign(5)
print(tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
AttributeError: 'tensorflow.python.framework.ops.EagerTensor' object has no attribute 'assign'</pre>



<h3 class="wp-block-heading jinr-heading d--bold">0埋めのTensorを作成する方法</h3>



<h4 class="wp-block-heading jinr-heading d--bold">形状を指定して作成する方法 tf.zeros</h4>



<p class="wp-block-paragraph">0埋めのTensorを作成するには、<span class="marker"><strong>tf.zeros</strong></span>を使用します。引数として<span class="marker"><strong>shape</strong></span>により形状を指定することで指定した形状で0埋めのTensorを作成することが可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# 0埋めのTensorを作成する tf.zeros
zeros_tensor = tf.zeros(shape=(3, 5))
print(zeros_tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]], shape=(3, 5), dtype=float32)</pre>



<h4 class="wp-block-heading jinr-heading d--bold">既存のTensorと同じ形状で作成する方法 tf.zeros_like</h4>



<p class="wp-block-paragraph">既存のTensorと同じ形状で全て0のTensorを作成するには、以下のように<span class="marker"><strong>tf.zeros_like</strong></span>が使用できます。既存のTensorに対する0のラベルを作成する際などにとても便利です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# ===== 既存のTensorと同じ形状の0埋めTensorを作成する
# 階数1のTensor (vector)
vector = tf.constant([1, 2, 3, 4, 5], dtype=tf.float16)
zeros_vector = tf.zeros_like(vector)
print(zeros_vector, "\n")

# 階数2のTensor (matrix)
matrix = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)
zeros_matrix = tf.zeros_like(matrix)
print(zeros_matrix)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor([0. 0. 0. 0. 0.], shape=(5,), dtype=float16) 

tf.Tensor(
[[0. 0.]
 [0. 0.]], shape=(2, 2), dtype=float16)</pre>



<h3 class="wp-block-heading jinr-heading d--bold">1埋めのTensorを作成する方法</h3>



<h4 class="wp-block-heading jinr-heading d--bold">形状を指定して作成する方法 tf.ones</h4>



<p class="wp-block-paragraph">1埋めのTensorを作成するには、<span class="marker"><strong>tf.ones</strong></span>を使用します。引数として<span class="marker"><strong>shape</strong></span>により形状を指定することで指定した形状で1埋めのTensorを作成することが可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# 1埋めのTensorを作成する tf.ones
ones_tensor = tf.ones(shape=(3, 5))
print(ones_tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]], shape=(3, 5), dtype=float32)</pre>



<h4 class="wp-block-heading jinr-heading d--bold">既存のTensorと同じ形状で作成する方法 tf.ones_like</h4>



<p class="wp-block-paragraph">既存のTensorと同じ形状で全て1のTensorを作成するには、以下のように<span class="marker"><strong>tf.ones_like</strong></span>が使用できます。既存のTensorに対する1のラベルを作成する際などにとても便利です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# ===== 既存のTensorと同じ形状の1埋めTensorを作成する
# 階数1のTensor (vector)
vector = tf.constant([1, 2, 3, 4, 5], dtype=tf.float16)
ones_vector = tf.ones_like(vector)
print(ones_vector, "\n")

# 階数2のTensor (matrix)
matrix = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)
ones_matrix = tf.ones_like(matrix)
print(ones_matrix)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor([1. 1. 1. 1. 1.], shape=(5,), dtype=float16) 

tf.Tensor(
[[1. 1.]
 [1. 1.]], shape=(2, 2), dtype=float16)</pre>



<h3 class="wp-block-heading jinr-heading d--bold">ランダムな数値でTensorを作成する方法 tf.random</h3>



<p class="wp-block-paragraph">以降ではランダムな数値でTensorを作成する方法の例を紹介します。ディープラーニングでは初期値などに乱数を使用するため、使い方をしっかり覚えておきましょう。</p>



<h4 class="wp-block-heading jinr-heading d--bold">0~1のランダムなTensorを作成する場合 tf.random.uniform</h4>



<p class="wp-block-paragraph">0~1のランダムなTensorを作成する場合には、<span class="marker"><strong>tf.random.uniform</strong></span>を使用します。</p>



<p class="wp-block-paragraph"><span class="marker"><strong>tf.random.set_seed</strong></span>により乱数のシードを指定できるので結果を固定したい場合はset_seedを使用しましょう。set_seedを指定しない場合は、実行毎に結果が変わります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# 乱数を固定したい場合は、set_seedで設定する
tf.random.set_seed(1)

# 0~1の乱数でTensorを作成する
uniform_tensor = tf.random.uniform(shape=(3, 5))
print(uniform_tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[0.16513085 0.9014813  0.6309742  0.4345461  0.29193902]
 [0.64250207 0.9757855  0.43509948 0.6601019  0.60489583]
 [0.6366315  0.6144488  0.8893349  0.6277617  0.53197503]], shape=(3, 5), dtype=float32)</pre>



<h4 class="wp-block-heading jinr-heading d--bold">正規分布に従うTensorを作成する場合 tf.random.normal</h4>



<p class="wp-block-paragraph">標準正規分布に従うランダムなTensorを作成する場合には、<span class="marker"><strong>tf.random.normal</strong></span>を使用します。</p>



<p class="wp-block-paragraph"><span class="marker"><strong>tf.random.set_seed</strong></span>により乱数のシードを指定できるので結果を固定したい場合はset_seedを使用しましょう。set_seedを指定しない場合は、実行毎に結果が変わります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

# 乱数を固定したい場合は、set_seedで設定する
tf.random.set_seed(1)

# 標準正規分布からランダムなTensorを作成する
normal_tensor = tf.random.normal(shape=(3, 5))
print(normal_tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[-1.1012203   1.5457517   0.383644   -0.87965786 -1.2246722 ]
 [-0.9811211   0.08780783 -0.20326038 -0.5581562  -0.7205441 ]
 [-0.6259924  -0.71502596 -0.34835446 -0.33646983  0.18257578]], shape=(3, 5), dtype=float32)</pre>



<h3 class="wp-block-heading jinr-heading d--bold">NumPy配列(ndarray)とTensorの相互変換</h3>



<p class="wp-block-paragraph">Pythonのデータ分析でよく使われるライブラリとしてNumPyがあります。NumPyの配列はndarrayという型ですが、NumPy配列(ndarray)とTensorは相互に変換が可能です。以下で方法を見ていきましょう。</p>



<h4 class="wp-block-heading jinr-heading d--bold">NumPy配列(ndarray)からTensorを作成する方法</h4>



<p class="wp-block-paragraph">NumPy配列(ndarray)からTensorを作成するのは簡単です。NumPyで作成した配列をtf.constantやtf.Variableに渡すことでTensorを作成できます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np
import tensorflow as tf

numpy_array = np.arange(1, 11)
print(numpy_array, "\n")

# ===== ndarrayからTensorを作成する
# ndarrayの形状でTensorに変換する
same_shape_tensor = tf.constant(numpy_array)
print(same_shape_tensor, "\n")

# 形状(shape)を指定して変換してTensorを作成する
changed_tensor = tf.constant(numpy_array, shape=(2, 5))
print(changed_tensor)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
[ 1  2  3  4  5  6  7  8  9 10] 

tf.Tensor([ 1  2  3  4  5  6  7  8  9 10], shape=(10,), dtype=int32) 

tf.Tensor(
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]], shape=(2, 5), dtype=int32)</pre>



<p class="wp-block-paragraph">上記の例のようにNumPy配列の形状そのままでTensorに変換することもできますし、shapeを指定することで形状を変換しつつTensorを作成することができます。なお、要素数が合うようにshapeを指定する必要がありますので注意しましょう。</p>



<p class="wp-block-paragraph">また、上記例はtf.constantで説明していますが、tf.Variableでも同じです。</p>



<h4 class="wp-block-heading jinr-heading d--bold">TensorをNumPy配列(ndarray)に変換する方法</h4>



<h5 class="wp-block-heading jinr-heading d--bold">Tensorのnumpyメソッドを使用する場合</h5>



<p class="wp-block-paragraph">作成したTensorをNumPy配列(ndarray)に変換するのも簡単です。以下のように<span class="marker"><strong>numpy</strong></span>メソッドを使用することでNumPy配列にすることができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import tensorflow as tf

tensor = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)
print(tensor, "\n")

# NumPy配列(ndarray)に変換する numpyメソッド
numpy_array = tensor.numpy()
print(numpy_array)
print(type(numpy_array))</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[1. 2.]
 [3. 4.]], shape=(2, 2), dtype=float16) 

[[1. 2.]
 [3. 4.]]
&lt;class 'numpy.ndarray'></pre>



<h5 class="wp-block-heading jinr-heading d--bold">NumPyのnp.array関数を使用する場合</h5>



<p class="wp-block-paragraph">もう一つの方法として、NumPyのnp.array関数にTensorFlowのTensorを渡して以下のようにしても、NumPy配列(ndarray)に変換することが可能です（TensorFlowのnumpyメソッド実行時と結果は同じ）。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np
import tensorflow as tf

tensor = tf.constant([[1, 2], [3, 4]], dtype=tf.float16)
print(tensor, "\n")

# NumPy配列(ndarray)に変換する np.arrayを使用
numpy_array = np.array(tensor)
print(numpy_array)
print(type(numpy_array))</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
tf.Tensor(
[[1. 2.]
 [3. 4.]], shape=(2, 2), dtype=float16) 

[[1. 2.]
 [3. 4.]]
&lt;class 'numpy.ndarray'></pre>



<h4 class="wp-block-heading jinr-heading d--bold">NumPyの配列(ndarray)とTensorFlowのTensorの違い</h4>



<p class="wp-block-paragraph">TensorFlowのTensorがNumPy配列(ndarray)より有利な点として、GPUやTPUの利用ができるという点が挙げられます。</p>



<p class="wp-block-paragraph">ディープラーニングでは、大規模なデータセット、モデルになってくるほどGPUやTPUを使用して処理を高速化することが必須になってきます。TensorFlowのTensorに変換することで適切にTensorFlowがGPUやTPUを使用して高速に処理をしてくれます。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">Googleによって開発されている機械学習ライブラリであるTensorFlowで、<span class="marker"><strong>Tensor（テンソル）</strong></span>を作成する以下のような各種方法を解説してきました。</p>



<ul class="wp-block-list jinr-list">
<li>tf.constant：定数のTensorを作成する</li>



<li>tf.Variable：変数のTensorを作成する</li>



<li>tf.zeros：0埋めのTensorを作成する</li>



<li>tf.zeros_like：既存のTensorと同じ形状の0埋めTensorを作成する</li>



<li>tf.ones：1埋めのTensorを作成する</li>



<li>tf.ones_like：既存のTensorと同じ形状の1埋めTensorを作成する</li>



<li>tf.random.uniform：0~1のランダムなTensorを作成する</li>



<li>tf.random.normal：標準正規分布に従うランダムなTensorを作成する</li>



<li>NumPy配列(ndarray)とTensorの相互変換</li>
</ul>



<p class="wp-block-paragraph">Tensorの作成方法は、TensorFlowでプログラミングをしていくうえで基礎ともいえる内容のためしっかり使えるようにしてもらえるとよいかと思います。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-data-analysis/tensorflow/fundamentals/create-tensor" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>

]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/tensorflow-tensor-create-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-06-07 23:51:51 by W3 Total Cache
-->