2017-10-21 41 views
0

我有一个令人难以置信的简单算法,错误,“ValueError:错误时检查输入:期望dense_4_input有形状(无,5),但有形状(5,1)阵列“.... 这是我正在运行的代码。简单的ML Algo不工作:ValueError:检查输入时出错:期望的dense_4_input有形状(无,5)但有形状的数组(5,1)

import numpy as np 
import matplotlib.pyplot as plt 
from keras.models import Sequential 
from keras.layers import Dense 
x = np.array([[1],[2],[3],[4],[5]]) 

y = np.array([[1],[2],[3],[4],[5]]) 
x_val = np.array([[6],[7]]) 
x_val = np.array([[6],[7]]) 
model = Sequential() 
model.add(Dense(1, input_dim=5)) 
model.compile(optimizer='rmsprop', loss='mse') 
model.fit(x, y, epochs=2, validation_data=(x_val, y_val)) 

回答

2

有两个问题:

首先:由于输出已经表示:"ValueError: Error when checking input: expected dense_4_input to have shape (None, 5) but got array with shape (5, 1)"这意味着,该神经网络期望形状的阵列(*,5)。用星号表示尺寸可以由用户自由选择。假如你有大量的数据,每个例子都是形状矢量(1,5),你可以将它们全部堆叠在一起,并将一大块数据传递给神经网络,它将知道如何处理它。因此,你必须做出x行向量如下:

x = np.array([[1,2,3,4,5]]) 

也看到Keras docs- Specifying the input shape

第二个:指定第一个图层的输出为1。这意味着,5维输入将只连接到一个神经元。然而,你的输出矢量y有5个值。所以你的输出矢量维度和你的神经网络输出不能组合在一起。 所以,你必须去与标y

y = np.array([1]) 

此外,您的验证数据和训练数据应具有相同的尺寸。另外,代码中存在拼写错误:从未定义过y_val

+0

非常感谢! – user2162942

相关问题