2016-09-21 5 views
0

私はTensorFlowを学んでいます。私の目標は、私のニーズに合わせてMultiPerceptronを実装することです。私はMNIST tutorial with MultiPerceptron implementationをチェックし、すべてはこの除き、私には明らかだった:TensorFlow多層パーセプトロン

_, c = sess.run([optimizer, cost], feed_dict={x: batch_x, 
                y: batch_y}) 

私は推測する、xは画像そのものである(28個の* 28ピクセルなので、入力が784個のニューロンである)とyは1×10であるラベルです配列:

x = tf.placeholder("float", [None, n_input]) 
y = tf.placeholder("float", [None, n_classes]) 

これらはバッチ全体(データポイントとラベルのパック)をフィードします。テンソルフローはこの「バッチ」入力をどのように解釈しますか?そして、それはどのようにしてウェイトを更新するのですか:バッチ内の各要素の後、またはバッチ全体を実行した後、同時に?

そして、私は1つの入力数(input_shape = [1,1])と出力4つの数字(output_shape = [1,4])する必要がある場合、どのように私はtf.placeholdersを変更する必要がありますし、どのフォームで、私はセッションにそれらを養う必要がありますか?

  1. 私はそれを解釈tensorflowないか、尋ねたとき、私はtensorflowは、単一の要素にバッチを分割方法を知りたいです。たとえば、batchは2次元配列です。どの方向に配列を分割しますか?または、行列演算を使用し、何も分割しませんか?

  2. 私が質問すると、行にサンプルを、列にフィーチャを持つ2次元配列である必要がありますか、 Dリスト。

    ValueError: Cannot feed value of shape (1, 18) for Tensor 'Placeholder_10:0', which has shape '(1, 1)'

    私が私を作成する必要があること表示されます。

は私がある私のフロートnumpyの配列X_trainxに、フィード時:

x = tf.placeholder("float", [1, n_input]) 

私はエラーが表示されますテンソルとしてのデータも?私は[18x1]を試してみました

Cannot feed value of shape (18, 1) for Tensor 'Placeholder_12:0', which has shape '(1, 1)'

答えて

0

They feed whole bathces(which are packs of data points and labels)!

はい、これは通常起因する二つの世界の最高を持っていることのいくつかの素敵な数学的性質に(訓練されているかのニューラルネットワークである - よりよい勾配近似一方ではSGDよりも大きく、フルGDよりもはるかに速く収束します)。

グラフの操作に従って「解釈」します。あなたはおそらく平均をに減らして、平均値を計算して、これを "解釈"にします。前の回答と同様に

And how does it update the weights: 1.simultaniusly after each element in a batch? 2. After running threw the whole batch?.

- バッチに関する「魔法」は何もありませんが、それはこのように、まだあり、ちょうど別の次元で、ニューラルネットの各内部動作はよくデータのバッチのために定義されます最後にが更新されました。平均操作を減らす(または、合計を減らすことができますか?)あなたは "小さな"勾配の平均に応じて更新しています(または、代わりに合計を減らす場合は合計)。繰り返しますが、あなたはそれを制御することができます(集約的な振る舞いまで、グラフにループを入れない限り、サンプルごとの更新を強制することはできません)。

And, if i need to imput one number(input_shape = [1,1]) and ouput four nubmers (output_shape = [1,4]), how should i change the tf.placeholders and in which form should i feed them into session? THANKS!!

ちょうど変数、n_input=1n_classes=4を設定し、あなたがあれば、「1×1」で、あなたのケースのバッチ= 1で([バッチ、n_input]および[バッチ、n_classes]配列として、以前のように自分のデータをプッシュ実際にバッチがあることを示唆する編集が開始され、1x1で1dの入力を意味するため、「次元1の1つのサンプル」を意味します)。それ

EDIT: 1.when i ask, how does tensorflow interpret it, i want to know, how tensorflow split the batch into single elements. For example, batch is a 2-D array, right? In which direction it splits an array. Or it uses matrix operations and doesnt split anything? 2. When i ask, how should i feed my data, i want to know, should it be a 2-D array with samples at its rows and features at its colums, or, maybe, could it be a 2-D list.

は何を分割しませありません。これは単なる行列であり、各演算は行列に対しても完全に定義されています。 通常の場合は、例を行に入れて第1次元のになります。これは正確には[バッチ、n_inputs]の通りです。batchの行にはそれぞれn_inputsの列があります。しかし、もう一度 - それについて特別なことは何もありません。また、本当に必要な場合は、列単位のバッチを受け入れるグラフを作成することもできます。

+0

編集を確認できますか?私は自分の答えをもっと具体的にしています。ありがとう! –

+0

申し訳ありませんが、コードに '[batch、n_inputs]'はありません。 –

+0

には '[None、n_inputs]'と同じものがあります( 'None'はTFが独自にこの次元を推測することを意味します)。 2回目の編集では、1列1列の行列を1列1列と定義した値に置き換えようとしたため、残りの質問とは何の関係もありません(1x1とあなたは1x18を食べました)。テンソルを作成することとは関係ありません(あなたはそうではありません)。ちょっと変わった形のデータを渡しただけです。 – lejlot

関連する問題