2016-11-04 65 views
0

我建立我自己的數據的1D卷積神經網絡(譜),並因與tf.reshape的問題。第一予加載與熊貓的數據,並轉換這些到numpy的陣列,708訓練示例光譜組成,每個長度2151的,Tensorflow重塑錯誤1D卷積神經網絡

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() 

其中I減去在每列中的平均值。所以數據的尺寸爲708 x 2151。然後我創建與啓動網絡,

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級特徵的地圖),

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) 

我然後生成該網絡的其餘部分,然後嘗試在其上運行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可以代替任何張量,因爲你已經改變了X_引用reshape運,這是該公司試圖取代的東西。它應該工作,如果你只是用不同的Python變量引用佔位符和重塑OP:

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:必須喂爲佔位符張量 'Placeholder_47' 的值與D型浮子 \t [[節點:Placeholder_47 =佔位符[D型細胞= DT_FLOAT,形狀= [],_device =「/作業:本地主機/副本:0 /任務:0/CPU:0「]()]] - 任何想法這意味着什麼?我認爲使用feed_dict應該表示這很好... – ben18785

+1

你是在Jupyter筆記本里面做這個嗎?這聽起來像一大堆佔位符正在浮動。試試'tf.reset_default_graph()'? –

+0

我是。我試過以上,但不幸的是我仍然有同樣的問題。還有什麼想法?爲此事道歉! – ben18785

相關問題