繁体   English   中英

python tflearn-ValueError:无法为张量'TargetsData / Y:0'输入形状为((?,2)'的形状(10,250,250,3)的值

[英]python tflearn - ValueError: Cannot feed value of shape (10, 250, 250, 3) for Tensor 'TargetsData/Y:0', which has shape '(?, 2)'

我正在尝试创建一个识别面孔的模型。 但是我一直遇到这个错误,对类似问题的其他答案都没有解决这个特定问题。 代码如下:

X = pickle.load(open('dataset.pkl', 'rb')).astype('float32')
Y = pickle.load(open('dataset.pkl', 'rb')).astype('float32')
X_test = pickle.load(open('dataset.pkl', 'rb')).astype('float32')
Y_test = pickle.load(open('dataset.pkl', 'rb')).astype('float32')

# Input is a 250x250 image with 3 color channels (red, green and blue)       

network = input_data(shape=[None, 250, 250, 3],
                 data_preprocessing=img_prep,
                 data_augmentation=img_aug)

# Step 1: Convolution
network = conv_2d(network, 32, 3, activation='relu')

# Step 2: Max pooling
network = max_pool_2d(network, 2)

# Step 3: Convolution again
network = conv_2d(network, 64, 3, activation='relu')

# Step 4: Convolution yet again
network = conv_2d(network, 64, 3, activation='relu')

# Step 5: Max pooling again
network = max_pool_2d(network, 2)

# Step 6: Fully-connected 512 node neural network
network = fully_connected(network, 512, activation='relu')

# Step 7: Dropout - throw away some data randomly during training to prevent over-fitting
network = dropout(network, 0.5)

# Step 8: Fully-connected neural network with two outputs to make the final prediction
network = fully_connected(network, 2, activation='softmax')

# Tell tflearn how we want to train the network
network = regression(network, optimizer='adam',
                 loss='categorical_crossentropy',
                 learning_rate=0.001)

# Wrap the network in a model object
model = tflearn.DNN(network, tensorboard_verbose=0, checkpoint_path='faceRecog.tfl.ckpt')

# Train it! We'll do 100 training passes and monitor it as it goes.
model.fit(X, Y, n_epoch=10, shuffle=True, validation_set=(X_test, Y_test),
      show_metric=True, batch_size=10,
      snapshot_epoch=True,
      run_id='faceRecog')

我不断

ValueError:无法为形状为((?,2)'的Tensor'TargetsData / Y:0'输入形状(10、250、250、3)的值。

此时,我已经尝试了所有方法,但无法完全理解如何解决问题。

输入的形状为(?, 250, 250, 3) (基于开头的注释以及您早先使用卷积层的事实),输出的形状为(?, 2) (基于快速您的最后一层是具有2个输出神经元的完全连接层)。 但是,您将相同的数据集提供给了两个:

X = pickle.load(open('dataset.pkl', 'rb')).astype('float32')
Y = pickle.load(open('dataset.pkl', 'rb')).astype('float32')

^^请注意,您为XY加载了相同的文件。

由于我不知道您要达到什么目标,因此有两种可能的解决方案:

  1. 如果您试图构建某种自动编码器(在这种情况下,将相同的数据集同时提供给输入和输出将是有意义的),则需要更改网络的体系结构,卷积层应馈入反卷积层。 如何做到这一点超出了单个堆栈溢出答案的范围

  2. 如果您尝试构建某种分类器,则说明您没有为Y读取正确的文件。 Y应该包含您要预测的标签,而不是图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM