2017-02-03 1 views
0

모델을 만들려고합니다. 얼굴을 알아 보자. 하지만이 오류가 계속 실행되고 비슷한 질문에 대한 다른 대답은이 특정 문제를 해결하지 못했습니다. 코드는 다음과 같다 :python tflearn - ValueError : '(?, 2)'모양을 가진 Tensor 'TargetsData/Y : 0 : 0'의 모양 값 (10, 250, 250, 3)을 입력 할 수 없습니다.

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: Cannot feed value of shape (10, 250, 250, 3) for Tensor 'TargetsData/Y:0', which has shape '(?, 2)'.

을 받고 유지하고 정확하게 문제를 해결 대해 이동하는 방법을 이해할 수 없습니다.

+0

이것은 너무 많은 코드입니다. 어느 누구도 데이터 셋을 다운로드하고, 전체 네트워크를 구성하고, "ValueError"를 디버그하려고하지 않습니다. [최소, 완전하고 검증 가능한] (http://stackoverflow.com/help/mcve) 예제를 만드는 방법을 참조하십시오. – gobrewers14

답변

1

입력 내용의 모양이 (?, 250, 250, 3) (시작 부분의 주석과 초기에 Convolution 레이어를 사용한다는 사실을 기반으로합니다.) 모양의 출력은 (?, 2)입니다 (마지막 레이어가 완벽하게 연결된 것을 기반으로 함). 레이어 2 출력 뉴런). 그러나, 당신은 모두에 동일한 데이터 집합을 공급 : 당신이 XY 모두 동일한 파일을로드

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

^^ 참고.

나는 두 가지 해결책이 있습니다 당신이 달성하려고 무엇을 알고하지 않기 때문에 : 당신은 (어떤 종류의 자동 인코더를 구축을 위해 노력하는 경우

  1. 이 경우 동일한 데이터 세트를 공급에서 입력과 출력 모두에 대해 이해가된다면), 네트워크의 아키텍처를 변경해야하며, 컨볼 루션 계층은 디콘 볼 루션 계층에 공급되어야합니다. 그것을하는 방법은 단일 스택 오버플로 대답의 범위를 벗어납니다

  2. 분류자를 만들려고하는 경우 Y에 맞는 파일을 읽지 못합니다. Y에는 이미지가 아니라 예측하려는 라벨이 포함되어 있어야합니다.

+0

이미지에서 얼굴을 인식 할 모델을 작성하려고합니다. 'dataset.pkl'에는 얼굴 이미지가 포함되어 있습니다. 얼굴이 아닌 이미지가 몇 개 있습니다. 이 사건에서 내가 정확히 무엇을 먹어야 하는가? – user7091463

+0

'(number_of_faces, 2)'형태의 행렬이어야합니다. 각면에'(1, 0)'이 있고'(0, 1)'과 얼굴이 맞지 않는 각 이미지에 대해 – Ishamael

+0

감사합니다. 어떤 오류도없이. 그러나 첫 번째 신기원에서는 정확도가 1보다 커지고 손실은 4000 정도입니다. 하드웨어 제한 때문에 내 데이터 세트의 이미지가 550 개에 불과합니다. 왜 그 원인이 무엇이며 왜 그런가? – user7091463

관련 문제