質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

536閲覧

TensorFlowで低レベルな操作を行いたい

s8079

総合スコア36

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/01 13:14

編集2020/05/04 08:09

前提・実現したいこと

可変のバッチサイズを取得し,それを用いて新たな形状のテンソルを作成後,各要素に代入処理を行いたいです.
ソースコードは簡単化のために書き換えています.
PyTorchで実装したソースコードを追記しました.
これをTensorFlowで実装したいです.
よろしくお願いします.

該当のソースコード

Python

1import tensorflow as tf 2 3def func(x): 4 # バッチサイズを取得(可変) 5 # nbatch = x.get_shape().as_list()[0] 6 nbatch = tf.shape(x)[0] 7 # 任意の形状のテンソル作成 8 # output = tf.zeros([nbatch, 2], dtype=x.dtype) 9 output = tf.Variable(initial_value=tf.zeros([nbatch, 2], dtype=x.dtype), trainable=False) 10 # 作成したテンソルの任意の要素に代入 11 # output[0, 0] = x[0, 0] 12 output = tf.assign(output[0, 0], x[0, 0]) 13 output = tf.assign(output[0, 1], x[0, 1]) 14 output = tf.assign(output[1, 0], x[0, 2]) 15 output = tf.assign(output[1, 1], x[1, 0]) 16 output = tf.assign(output[2, 0], x[1, 1]) 17 output = tf.assign(output[2, 1], x[1, 2]) 18 return output 19 20if __name__ == '__main__': 21 holder = tf.placeholder(tf.float32, [None, 3]) 22 op = func(holder) 23 with tf.Session() as sess: 24 sess.run(tf.global_variables_initializer()) 25 x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 26 result = sess.run(op, feed_dict={holder: x}) 27 print(result)

Python

1import torch 2 3def func(x): 4 # バッチサイズを取得(可変) 5 nbatch = x.size(0) 6 # 任意の形状のテンソル作成 7 output = x.new_empty((nbatch, 2)) 8 # 作成したテンソルの任意の要素に代入 9 output[0, 0] = x[0, 0] 10 output[0, 1] = x[0, 1] 11 output[1, 0] = x[0, 2] 12 output[1, 1] = x[1, 0] 13 output[2, 0] = x[1, 1] 14 output[2, 1] = x[1, 2] 15 return output 16 17if __name__ == '__main__': 18 x = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 19 result = func(x) 20 print(result)

発生している問題・エラーメッセージ

Traceback (most recent call last): File "run.py", line 23, in <module> op = func(holder) File "run.py", line 10, in func output = tf.Variable(tf.zeros([nbatch, 2]), trainable=False) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variables.py", line 258, in __call__ return cls._variable_v1_call(*args, **kwargs) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variables.py", line 219, in _variable_v1_call shape=shape) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variables.py", line 197, in <lambda> previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variable_scope.py", line 2519, in default_variable_creator shape=shape) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variables.py", line 262, in __call__ return super(VariableMetaclass, cls).__call__(*args, **kwargs) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variables.py", line 1688, in __init__ shape=shape) File "C:\Anaconda3\Lib\site-packages\tensorflow_core\python\ops\variables.py", line 1853, in _init_from_args self._initial_value) ValueError: initial_value must have a shape specified: Tensor("zeros:0", shape=(?, 2), dtype=float32)

補足情報(FW/ツールのバージョンなど)

python 3.6.5
tensorflow 1.12.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/01 16:45

エラーメッセージはこれで全部ですか?
s8079

2020/05/02 00:27

最初に投稿したエラーメッセージはコメントアウトしているget_shape()を使用したときのものでしたので修正しました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問