我建立我自己的數據的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])
有沒有人有任何想法嗎?
最佳,
本
謝謝你,但是當我的代碼更改爲上述我得到以下錯誤,InvalidArgumentError:必須喂爲佔位符張量 'Placeholder_47' 的值與D型浮子 \t [[節點:Placeholder_47 =佔位符[D型細胞= DT_FLOAT,形狀= [],_device =「/作業:本地主機/副本:0 /任務:0/CPU:0「]()]] - 任何想法這意味着什麼?我認爲使用feed_dict應該表示這很好... – ben18785
你是在Jupyter筆記本里面做這個嗎?這聽起來像一大堆佔位符正在浮動。試試'tf.reset_default_graph()'? –
我是。我試過以上,但不幸的是我仍然有同樣的問題。還有什麼想法?爲此事道歉! – ben18785