2016-11-04 6 views
0

私は自分自身のデータ(スペクトル)用の1d畳み込みニューラルネットを構築しており、tf.reshapeに問題があります。まず私は、パンダとのデータをロードし、708トレーニング例スペクトルの構成numpyの配列、これらの変換長さ2151のそれぞれ、Iは各列の平均値を減算 1d畳み込みニューラルネットのTensorflow再整形エラー

import pandas as pd 
import numpy as np 
data = pd.read_csv('test.csv',header=None) 
yTrue = data.ix[:,0].as_matrix() 
data = data - data.mean() 
data = data.ix[:,1:].as_matrix() 

。したがって、データは708 x 2151の寸法です。私はその後、

W_conv1 = weight_variable([1, 10, 1, 32]) 
b_conv1 = bias_variable([32]) 
h_conv1 = tf.nn.relu(conv2d(x_, W_conv1) + b_conv1) 
h_pool1 = max_pool_2x2(h_conv1) 

私はその後、構築、で始まるネットワーク、

sess = tf.InteractiveSession() 
## define inputs 
x_ = tf.placeholder(tf.float32, shape=[None, 2151]) 
x_ = tf.reshape(x_, [-1,1,2151,1]) 
y_ = tf.placeholder(tf.float32, shape=[None]) 
私1D畳み込みニューラルネットの入力です

(10幅のカーネルでは、32の特徴マップ)を作成しますその後、ネットワークの他の部分とその上でADAMを実行しようと、

cost_function = tf.reduce_mean(tf.pow(y_out - y_, 2))/(2 * samples_number) #L2 loss 
train_step = tf.train.AdamOptimizer(1e-4).minimize(cost_function) 
correct_prediction = tf.equal(tf.argmax(y_out,1), tf.argmax(y_,1)) 
sess.run(tf.initialize_all_variables()) 
for i in range(20000): 
    print(i) 
    sess.run(train_step, feed_dict={x_: data, y_: yTrue}) 

私は次のエラーを取得するしかし:

ValueError: Cannot feed value of shape (708, 2151) for Tensor u'Reshape_26:0', 
which has shape '(?, 1, 2151, 1)' 

私はこれらの答えを見てきました:TensorFlow/TFLearn: ValueError: Cannot feed value of shape (64,) for Tensor u'target/Y:0', which has shape '(?, 10)'; Tensorflow error using my own dataこれは、ネットワークにデータを渡す前に、私が幾分かの形を変えることを必要としていることを示唆しています。しかし、私はこれが何であるべきかわからないのですか?特に、データの最初の行で次のように動作するので、

t = tf.constant(data[0]) 
tf.reshape(t,[1,1,2151,1]) 

ここにはアイデアはありますか?

ベスト、

ベン

答えて

1

問題はfeed_dictは、任意のテンソルを交換することができるということです、そしてあなたがreshapeオペアンプを参照するようにX_変更したことから、それは交換するためにしようとしている事です。あなただけのプレースホルダとリシェイプOPを参照するためにさまざまなPythonの変数を使用する場合、それは動作するはずです:

x_placeholder_ = tf.placeholder(tf.float32, shape=[None, 2151]) 
x_ = tf.reshape(x_placeholder_, [-1,1,2151,1]) 

を供給する際に続いて、x_placeholder_を使用します。

sess.run(train_step, feed_dict={x_placeholder_: data, y_: yTrue}) 
+0

はありがとう、私はにコードを変更するとき上記のエラーが発生しました:InvalidArgumentError:dtype floatでプレースホルダテンソル 'Placeholder_47'の値を入力する必要があります \t [[Node:Placeholder_47 =プレースホルダ[dtype = DT_FLOAT、shape = []、_device = "/ job:localhost /レプリカ:0 /タスク:0/cpu:0 "]()]] - これが何を意味するか?私はfeed_dictを使うとこれがうまくいくと思っていたはずです... – ben18785

+1

Jupyterノートブックの中でこれをやっていますか?プレースホルダーが一杯に浮かんでいるようです。 'tf.reset_default_graph()'を試してみてください。 –

+0

私は午前。私は上記を試みたが、残念ながら私はまだ同じ問題を抱えている。これ以上のアイデアは?これにつきましては申し訳ございません! – ben18785

関連する問題