我有EEG数据文件,我想在CNN中使用tensorflow分类为2类。我的数据是3D(91,2500,39),91是电极的no,2500没有样本,39是数量最后一个维度(39)在(38-41)之间的不同文件中有所不同,因此在将维度缩小为2D之后,我将所有文件的大小调整为(91,97500)并使用以下代码将所有文件附加到我的空列表中
for file in os.listdir(dataDir):
data=scipy.io.loadmat(file)
x=data['eegdata']
x = x.reshape(91, -1)
x=cv2.resize(x,(91,97500))
# x=x.reshape(8872500)
# print(x.shape)
X.append(x)
X=np.array(X)
然后我用尺寸[None,8872500]创建了输入原始数据的张量占位符,值8872500来自91 * 97500,我应该将数据分类为两个类
x = tf.placeholder(tf.float32, shape=[None, 8872500])
y = tf.placeholder(tf.float32, shape=[None, 2])
keep_prob = tf.placeholder(tf.float32)
我在输入卷积层之前改变了我的输入
x = tf.reshape(x, shape=[-1, 91, 97500, 1])
我的批量大小为6,当我运行我的代码时出现错误
ValueError:无法为Tensor' Placeholder:0'提供形状值(6,97500,91),其形状为'(?,8872500)'
我试图将我的输入重新整形为8872500(因为它可以在for循环的注释部分看到),当我这样做我的计算机堆栈时,我应该使用哪些形状用于我的程序(张量和输入)? 我的会话看起来像这样
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
step = 1
# Keep training until reach max iterations
while step * batch_size < training_iters:
offset = (step * batch_size) % (ytrain.shape[0] - batch_size)
batch_x = xtrain[offset:(offset + batch_size)]
batch_y = ytrain[offset:(offset + batch_size)]
# Run optimization op (backprop)
sess.run(optimizer, feed_dict={x: batch_x, y: batch_y, keep_prob: dropout})
谢谢。
答案 0 :(得分:0)
batch_x的形状是什么?问题出在你的占位符上: 试试这个:
x = tf.placeholder(tf.float32, shape=[None, 91, 97500])
此外,最好在重塑x之后调用变量reshaped_x
以防止混淆。