我建立我自己的数据的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