Tensorflowを使用してモデルをトレーニングする前に、データの前処理を行う必要があるため、tensor
の変更が必要です。しかし、私はnumpy
を使用して方法のようtensor
の値を変更する方法については考えています。Tensorflow:テンソルの値を変更する方法
そうすることの最善の方法は、直接tensor
を変更することが可能であることです。しかし、Tensorflowの現在のバージョンでは不可能と思われます。別の方法は、プロセスのためにndarray
にtensor
を変え、再び変更するtf.convert_to_tensor
を使用しています。
キーはndarray
にtensor
を変更する方法です。
1)tf.contrib.util.make_ndarray(tensor)
: https://www.tensorflow.org/versions/r0.8/api_docs/python/contrib.util.html#make_ndarray
これは、文書ごととして最も簡単な方法だが、まだ私はTensorflowの現在のバージョンではこの機能を見つけることができません。第二に、それの入力はtensor
ではなくTensorProto
です。
2)a
を別のものにコピーするndarray
ただし、ノートブックでtf.InteractiveSession()
を使用する場合にのみ使用できます。
コードを有する単純な場合について示しています。このコードの目的は、tfc
が処理後にnpc
と同じ出力を持つようにすることです。
ヒント
あなたがtfc
とnpc
が互いに独立していることを扱う必要があります。これは、最初に取得したトレーニングデータはtf.placeholder()
とtensor
フォーマットである状況を満たしています。
ソースコード
import numpy as np
import tensorflow as tf
tf.InteractiveSession()
tfc = tf.constant([[1.,2.],[3.,4.]])
npc = np.array([[1.,2.],[3.,4.]])
row = np.array([[.1,.2]])
print('tfc:\n', tfc.eval())
print('npc:\n', npc)
for i in range(2):
for j in range(2):
npc[i,j] += row[0,j]
print('modified tfc:\n', tfc.eval())
print('modified npc:\n', npc)
出力:
TFC:
[1 2]
[3 4]
npc:
[1 2]
[3 4]
修飾TFC:
[1 2]
[3 4]
修飾NPC:
[[ 1.1 2.2]
[3.1 4.2]
ありがとうございます!私はあなたの思考は、最初に 'npc'で' npc'と同じ値を共有し、 'npc'で最初に処理し、同じ出力に対して' tfc'で 'assign 'することができると考えていると思います。しかし、そうではありません。 あなたが持っている唯一のデータは 'tfc'です。あなたは' npc'を扱う必要があることを最初には示唆していません。ですから、キーは 'tfc'のデータをどのように処理するのかでなければなりません。 – user3030046
@ user3030046操作によって異なります。単純なadd/subの場合は、assign_sub/assign_addを使用します。他のものには、他の多くの方法があります。 tf.Tensorの要素を更新しますか?ユースケースを教えていただければ、私ができることを見ていきます。 –
私の場合、私はCBOW(最後のセルは[ここ](https://github.com/tensorflow/tensorflow/blob/e39d8feebb9666a331345cd8d960f5ade4652bba/tensorflow/examples/udacity/5_word2vec.ipynb)に実装しようとしています。具体的には、10行3列の行列に対して行方向の合計を使用し、10行1列のベクトルを出力するようなものです。この畳み込み演算は、10同じサイズの出力行列を生成するでしょう。 – user3030046