Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Higgs玻色子Kaggle上带有Keras DNN的Web服务器中的Numpy阵列形状问题_Python_Numpy_Tensorflow_Keras - Fatal编程技术网

Python Higgs玻色子Kaggle上带有Keras DNN的Web服务器中的Numpy阵列形状问题

Python Higgs玻色子Kaggle上带有Keras DNN的Web服务器中的Numpy阵列形状问题,python,numpy,tensorflow,keras,Python,Numpy,Tensorflow,Keras,我正在使用创建一个Python web服务器,以便提供在Kaggle-higgs玻色子数据集上训练的Keras神经网络的结果。我在服务器的日志中看到: # print(data) [ 0.86929321 -0.63508183 0.22569026 0.32747006 -0.6899932 0.75420225 -0.24857314 -1.0920639 0. 1.37499213 -0.65367419 0.93034911 1.10743606

我正在使用创建一个Python web服务器,以便提供在Kaggle-higgs玻色子数据集上训练的Keras神经网络的结果。我在服务器的日志中看到:

# print(data)

[ 0.86929321 -0.63508183  0.22569026  0.32747006 -0.6899932   0.75420225
 -0.24857314 -1.0920639   0.          1.37499213 -0.65367419  0.93034911
  1.10743606  1.13890433 -1.57819831 -1.04698539  0.          0.65792954
 -0.01045457 -0.04576717  3.10196137  1.35376     0.97956312  0.97807616
  0.92000484  0.72165745  0.98875093  0.87667835]

# print(data.shape)

(28,)

# The exception:
output = model.predict(data)
  File "/Users/david/PycharmProjects/server/lib/python3.6/site-packages/keras/engine/training.py", line 1817, in predict
check_batch_axis=False)
  File "/Users/david/PycharmProjects/server/lib/python3.6/site-packages/keras/engine/training.py", line 123, in _standardize_input_data
str(data_shape))
ValueError: Error when checking : expected input_1 
    to have shape (28,) but got array with shape (1,)
我还编写了一个独立脚本,它产生了相同的异常:

model = load_model('models/keras-higgs.h5')

test_data = np.array([0.86929321, -0.63508183,  0.22569026,  0.32747006, -0.6899932,  0.75420225,
                      -0.24857314, -1.0920639,   0.,          1.37499213, -0.65367419, 0.93034911,
                      1.10743606,  1.13890433, -1.57819831, -1.04698539,  0.,         0.65792954,
                      -0.01045457, -0.04576717,  3.10196137,  1.35376,     0.97956312, 0.97807616,
                      0.92000484,  0.72165745,  0.98875093,  0.87667835])
print(test_data.shape) # (28, )
result = model.predict(test_data) # ValueError
print(result) 
神经网络的结构如下:

from keras.models import Model
from keras.layers import Input, Dense

input_layer = Input(shape=(28, ))
hidden_layer_1 = Dense(24, activation='sigmoid')(input_layer)
hidden_layer_2 = Dense(20, activation='sigmoid')(hidden_layer_1)
hidden_layer_3 = Dense(16, activation='sigmoid')(hidden_layer_2)
hidden_layer_4 = Dense(12, activation='sigmoid')(hidden_layer_3)
output_layer = Dense(2, activation='softmax')(hidden_layer_4)

model = Model(input_layer, output_layer)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(measurements, labels, epochs=500, batch_size=256)
model.save('../models/keras-higgs.h5')
import numpy as np
from japronto import Application
from json import JSONDecodeError
from keras.models import load_model

model = load_model('models/keras-higgs.h5')

def higgs(request):
    try:
        data = np.array(request.json)
        print(data)
        print(data.shape)
        output = model.predict(data)
    except JSONDecodeError:
        return request.Response(code=400)
    return request.Response(json=output)

app = Application()
app.router.add_route('/higgs', higgs, 'POST')
app.run(debug=True)
Japronto服务器的定义如下:

from keras.models import Model
from keras.layers import Input, Dense

input_layer = Input(shape=(28, ))
hidden_layer_1 = Dense(24, activation='sigmoid')(input_layer)
hidden_layer_2 = Dense(20, activation='sigmoid')(hidden_layer_1)
hidden_layer_3 = Dense(16, activation='sigmoid')(hidden_layer_2)
hidden_layer_4 = Dense(12, activation='sigmoid')(hidden_layer_3)
output_layer = Dense(2, activation='softmax')(hidden_layer_4)

model = Model(input_layer, output_layer)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(measurements, labels, epochs=500, batch_size=256)
model.save('../models/keras-higgs.h5')
import numpy as np
from japronto import Application
from json import JSONDecodeError
from keras.models import load_model

model = load_model('models/keras-higgs.h5')

def higgs(request):
    try:
        data = np.array(request.json)
        print(data)
        print(data.shape)
        output = model.predict(data)
    except JSONDecodeError:
        return request.Response(code=400)
    return request.Response(json=output)

app = Application()
app.router.add_route('/higgs', higgs, 'POST')
app.run(debug=True)

ValueError
很奇怪,因为日志中的
shape=(28,)
。我做错了什么?我该如何解决

看这张照片,你好像有一个小数组;形状(28,)可能具有误导性


只需执行
data=data。重塑((1,28))
即可将输入重塑为具有所需形状的正确nd数组。

谢谢,Cihan,我尝试了
data=data。重塑((28,1))打印(data.shape)
以打印
(28,1)
。但我仍然得到
ValueError:Error当检查时:期望输入1具有形状(28),但得到了具有形状(1)的数组。
@mobiusinversion实际上它看起来像keras期望(m\u序列,n\u特征)形状输入。你能试试data=data.Reformate((1,28))吗?Hye Cihan,我刚刚登录发布更新,我查看了
training.py:1815
,看到
x=\u standarized\u input\u data(x,self.\u feed\u input\u name,self.\u feed\u input\u shapes,check\u batch\u axis=False)
。所以,是的,这是有效的,我改变了:
data=data.reformate((1,28))
。你想编辑答案,我可以接受吗?