gpt4 book ai didi

python - keras 预测错误

转载 作者:太空狗 更新时间:2023-10-29 17:39:16 28 4
gpt4 key购买 nike

我正在尝试使用 keras 神经网络来识别绘制数字的 Canvas 图像并输出数字。我已经保存了神经网络并使用 django 来运行 web 界面。但是每当我运行它时,我都会收到内部服务器错误和服务器端代码错误。错误显示异常:检查时出错:预期 dense_input_1 具有形状 (None, 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")

我检查过的链接是:

编辑遵从 Rohan 的建议,这是我的堆栈跟踪

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")

编辑我尝试将 img reshape 为 (1,784) 但它也失败了,给出与此问题标题相同的错误

感谢您的帮助,并就我应该如何添加到问题中发表评论。

最佳答案

您要求神经网络评估 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]))

希望这也能为您解决问题:)

关于python - keras 预测错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com