Tôi đang cố gắng sử dụng mạng nơron keras để nhận dạng hình ảnh canvas của các chữ số được vẽ và xuất số. Tôi đã lưu mạng thần kinh và sử dụng django để chạy giao diện web. Nhưng bất cứ khi nào tôi chạy nó, tôi nhận được một lỗi máy chủ nội bộ và một lỗi trên mã phía máy chủ. Lỗi nói Ngoại lệ: Lỗi khi kiểm tra: dự kiến dense_input_1 có hình dạng (Không có, 784) nhưng có mảng có hình dạng (784, 1). chỉ giao diện chính của tôi làlỗi máy ảnh trên dự đoán
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")
Các liên kết Tôi đã kiểm tra ra là:
Sửa Tuân thủ Rohan của gợi ý, đây là dấu vết ngăn xếp của tôi
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)
Ngoài ra, tôi có mô hình mà tôi đã sử dụng để đào tạo mạng ban đầu.
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")
Sửa tôi đã cố gắng định hình lại các img tới (1784) và nó cũng thất bại, đưa ra các lỗi tương tự như tiêu đề của câu hỏi này
Thanks for the help, và để lại ý kiến về cách tôi nên thêm vào câu hỏi.
Kiểm tra nếu điều này làm việc bên ngoài của django. Đăng dấu vết ngăn xếp đầy đủ. Bạn đã đào tạo mô hình như thế nào? – Rohan
@Rohan Tôi đã thêm ngăn xếp traceback và tệp keras gốc, vì vậy, hãy xem – Superman
Bạn đã cố gắng thực hiện một cái gì đó như: "img_np.reshape ((None, 784))" before "loaded_model.predict (img_np)"? –