9

나는 케라 신경망을 사용하여 그려진 자릿수의 캔버스 이미지를 인식하고 숫자를 출력하려고합니다. 신경 네트워크를 저장하고 장고를 사용하여 웹 인터페이스를 실행했습니다. 그러나 그것을 실행할 때마다 내부 서버 오류 및 서버 측 코드 오류가 발생합니다. 오류 : 예외 : dense_input_1에 모양 (없음, 784)이 있어야하지만 모양이 배열 (784, 1) 인 경우 확인 오류 :. 내 유일한 기본보기 내가 체크 아웃 한예기치 않은 케라 오류

from django.shortcuts import render 
from django.http import HttpResponse 
import StringIO 
from PIL import Image 
import numpy as np 
import re 
from keras.models import model_from_json 
def home(request): 
    if request.method=="POST": 
     vari=request.POST.get("imgBase64","") 
     imgstr=re.search(r'base64,(.*)', vari).group(1) 
     tempimg = StringIO.StringIO(imgstr.decode('base64')) 
     im=Image.open(tempimg).convert("L") 
     im.thumbnail((28,28), Image.ANTIALIAS) 
     img_np= np.asarray(im) 
     img_np=img_np.flatten() 
     img_np.astype("float32") 
     img_np=img_np/255 
     json_file = open('model.json', 'r') 
     loaded_model_json = json_file.read() 
     json_file.close() 
     loaded_model = model_from_json(loaded_model_json) 
     # load weights into new model 
     loaded_model.load_weights("model.h5") 
     # evaluate loaded model on test data 
     loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) 
     output=loaded_model.predict(img_np) 
     score=output.tolist() 
     return HttpResponse(score) 
    else: 
     return render(request, "digit/index.html") 

링크입니다은 다음과 같습니다 로한의 준수

편집 제안, 이것은 내 스택 추적입니다

Internal Server Error: /home/ 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 149, in get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 147, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/vivek/keras/neural/digit/views.py", line 27, in home 
output=loaded_model.predict(img_np) 
    File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 671, in predict 
return self.model.predict(x, batch_size=batch_size, verbose=verbose) 
    File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1161, in predict 
check_batch_dim=False) 
    File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 108, in standardize_input_data 
str(array.shape)) 
Exception: Error when checking : expected dense_input_1 to have shape (None, 784) but got array with shape (784, 1) 

또한 네트워크를 초기에 훈련하는 데 사용한 모델이 있습니다.

import numpy 
from keras.datasets import mnist 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.layers import Dropout 
from keras.utils import np_utils 
# fix random seed for reproducibility 
seed = 7 
numpy.random.seed(seed) 
(X_train, y_train), (X_test, y_test) = mnist.load_data() 
for item in y_train.shape: 
    print item 
num_pixels = X_train.shape[1] * X_train.shape[2] 
X_train = X_train.reshape(X_train.shape[0], num_pixels).astype('float32') 
X_test = X_test.reshape(X_test.shape[0], num_pixels).astype('float32') 
# normalize inputs from 0-255 to 0-1 
X_train = X_train/255 
X_test = X_test/255 
print X_train.shape 
# one hot encode outputs 
y_train = np_utils.to_categorical(y_train) 
y_test = np_utils.to_categorical(y_test) 
num_classes = y_test.shape[1] 
# define baseline model 
def baseline_model(): 
    # create model 
    model = Sequential() 
    model.add(Dense(num_pixels, input_dim=num_pixels, init='normal', activation='relu')) 
    model.add(Dense(num_classes, init='normal', activation='softmax')) 
    # Compile model 
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 
    return model 
# build the model 
model = baseline_model() 
# Fit the model 
model.fit(X_train, y_train, validation_data=(X_test, y_test), nb_epoch=20, batch_size=200, verbose=1) 
# Final evaluation of the model 
scores = model.evaluate(X_test, y_test, verbose=0) 
print("Baseline Error: %.2f%%" % (100-scores[1]*100)) 
# serialize model to JSON 
model_json = model.to_json() 
with open("model.json", "w") as json_file: 
    json_file.write(model_json) 
# serialize weights to HDF5 
model.save_weights("model.h5") 
print("Saved model to disk") 

편집 내가 (1784)에 IMG을 재편 시도하고 또한 도움을

감사이 질문의 제목과 같은 오류를주고, 실패, 그리고 방법에 대한 덧글을 남길 질문에 추가해야합니다.

+0

확인합니다. 전체 스택 추적을 게시하십시오. 모델을 어떻게 훈련 시켰습니까? – Rohan

+0

@Rohan 추적 추적 스택과 원본 keras 파일을 추가 했으므로 보겠습니다. – Superman

+0

"loaded_model.predict (img_np)"이전에 "img_np.reshape ((없음, 784))"와 같은 것을 시도한 적이 있습니까? –

답변

18

784 개의 입력이있는 하나의 사례 대신 각각 하나의 입력으로 784 개의 사례를 평가하도록 신경망에 요청합니다. 나는 동일한 문제가 있었고 입력 요소의 배열 인 단일 요소로 배열을 갖는 문제를 해결했습니다. 아래 예제를 참조하십시오. 첫 번째 것은 작동하지만 두 번째 오류는 발생하는 것과 동일한 오류를 제공합니다. 이뿐만 아니라 당신을 위해 그것을 해결

model.predict(np.array([[0.5, 0.0, 0.1, 0.0, 0.0, 0.4, 0.0, 0.0, 0.1, 0.0, 0.0]])) 
model.predict(np.array([0.5, 0.0, 0.1, 0.0, 0.0, 0.4, 0.0, 0.0, 0.1, 0.0, 0.0])) 

희망 :)이 장고의 외부에서 작동하는 경우

+0

https://stackoverflow.com/questions/47295025/valueerror-at-image-tensor-tensoractivation-5-softmax0-shape-4-dtyp/47300005?noredirect=1#comment81555441_47300005 모든 제안 –