2016-11-04 68 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

相关问题