<?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.set_seed」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/tf-random-set_seed/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sun, 11 Jan 2026 06:57:08 +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.set_seed」タグの記事一覧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-shuffle/</link>
					<comments>https://tech.nkhn37.net/tensorflow-tensor-shuffle/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Sun, 09 Oct 2022 22:00:00 +0000</pubDate>
				<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[tf.random.set_seed]]></category>
		<category><![CDATA[tf.random.shuffle]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=5099</guid>

					<description><![CDATA[Googleによって開発されている機械学習ライブラリであるTensorFlowで、Tensorをシャッフルする方法を解説します。 Tensorのシャッフル方法 ディープラーニングに関する処理の実装では、データをシャッフル [&#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">ディープラーニングに関する処理の実装では、データをシャッフルする場合が頻繁に発生します。</p>



<p class="wp-block-paragraph">モデルの訓練の際には、データセットをいくつかのバッチ単位で学習させるといったことをしますが、その際に同じ特徴のデータが固まっている場合、そのままの順番のまま区切るようなことをすると一つのバッチに含まれるデータの種類が偏ってしまいます。</p>



<p class="wp-block-paragraph">このような際には、データセットのTensorをランダムにシャッフルしてから処理することが大切です。以降では、Tensorをランダムにシャッフルする方法について説明していきます。</p>



<h3 class="wp-block-heading jinr-heading d--bold">Tensorのシャッフル方法 tf.random.shuffle</h3>



<p class="wp-block-paragraph">Tensorの要素をランダムにシャッフルするには、以下のように<span class="marker"><strong>tf.random.shuffle</strong></span>を使用します。</p>



<p class="wp-block-paragraph">実行結果を固定するために<span class="marker"><strong>tf.random.set_seed</strong></span>でglobal seedを設定し、shuffleメソッドでは、<span class="marker"><strong>seed</strong></span>引数によってoperation seedを設定しています。2種類のシードの違いについては後ほど説明します。</p>



<p class="wp-block-paragraph">結果が毎回ランダムになるように動作させ場合は、シード設定はしないようにすればよいです。</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(np.arange(1, 51), shape=(10, 5))
print(tensor, "\n")

# グローバルな乱数シードの設定
tf.random.set_seed(0)

# Tensorをシャッフルする (オペレーションの乱数シードの設定)
shuffled_tensor = tf.random.shuffle(tensor, seed=1)
print(shuffled_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  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]
 [26 27 28 29 30]
 [31 32 33 34 35]
 [36 37 38 39 40]
 [41 42 43 44 45]
 [46 47 48 49 50]], shape=(10, 5), dtype=int32) 

tf.Tensor(
[[36 37 38 39 40]
 [11 12 13 14 15]
 [26 27 28 29 30]
 [41 42 43 44 45]
 [16 17 18 19 20]
 [21 22 23 24 25]
 [31 32 33 34 35]
 [ 1  2  3  4  5]
 [46 47 48 49 50]
 [ 6  7  8  9 10]], shape=(10, 5), dtype=int32)</pre>



<p class="wp-block-paragraph">結果を見ると分かるように、tf.random.shuffleは0番目の軸に対してデータをシャッフルします。上記の例では、行がデータ番号、列が属性値を表していると考えると、データの順番がうまくシャッフルできることが分かるかと思います。</p>



<p class="wp-block-paragraph">また、例えば画像データで(データ数, チャンネル, 縦, 横)のようなTensorを用意してある場合を考えてみましょう。この場合では、shuffleで0番目の軸でシャッフルされることで、画像データの順番がうまくシャッフルされることになります。</p>



<h3 class="wp-block-heading jinr-heading d--bold">乱数シードの種類と挙動</h3>



<p class="wp-block-paragraph">TensorFlowでの乱数シードには2つの種類があります。tf.random.set_seedで設定した<span class="marker"><strong>global seed</strong></span>とtf.random.shuffleのseed引数で指定した<span class="marker"><strong>operation seed</strong></span>という2つです。これらの組み合わせで乱数の生成シーケンスが決まってきます。</p>



<p class="wp-block-paragraph">乱数シードに関する説明については、公式ドキュメントの<a rel="noreferrer noopener" href="https://www.tensorflow.org/api_docs/python/tf/random/set_seed" target="_blank">こちら</a>に記載があります。ここでも簡単に整理しておきます。</p>



<ol class="wp-block-list jinr-list">
<li>global seedとoperationseedがどちらも設定されていない場合：ランダムなシードが選択されて使用される。</li>



<li>global seedが設定されていて、operation seedが設定されていない場合：同じバージョンのTensorFlowとユーザーコード内では、決まったランダムシーケンスが生成されるが、異なるバージョンのTensorFlowの場合、順序が異なる可能性がある。</li>



<li>operation seedが設定されていて、global seedが設定されていない場合：デフォルトのglobal seedと指定したoperation seedでランダムシーケンスが生成される。</li>



<li>global seedとoperation seedが両方設定されている場合：両方の指定したシードを使用してランダムシーケンスが生成される。</li>
</ol>



<p class="wp-block-paragraph">上記のように、2つの乱数シードによって乱数の生成シーケンスが変わってきます。バージョン等含めて同じような結果になるようにしたい場合には、global seedとoperation seedの両方を指定するとよいようです。</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>を解説しました。具体的には、<span class="marker"><strong>tf.random.shuffle</strong></span>の使い方について紹介しています。</p>



<p class="wp-block-paragraph">ディープラーニングでは、モデルの訓練時等でデータセットをシャッフルするということをよく行いますので、使い方をしっかり覚えておきましょう。</p>



<p class="wp-block-paragraph">また、乱数シードには、global seedとoperation seedがあり、それらによって乱数のシーケンスが決まることについても説明しました。ディープラーニングの実装をしているときの動作確認で、毎回乱数が変わってしまうと精度の変化が確認できず困ってしまいますので、乱数のシードは固定して試すことが多くなります。乱数シードの設定方法と挙動についてよく理解しておくとよいでしょう。</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/shuffle" 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-shuffle/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-12 16:58:45 by W3 Total Cache
-->