为啥我的循环神经网络给我一个错误?
Posted
技术标签:
【中文标题】为啥我的循环神经网络给我一个错误?【英文标题】:Why is my recurrent neural network giving me an error?为什么我的循环神经网络给我一个错误? 【发布时间】:2019-07-02 06:57:27 【问题描述】:您好,我在使用 openaigym 制作一个循环神经网络时遇到此值错误 -
Traceback (most recent call last):
File "C:/Users/Tejas/Desktop/ML Laboratory/Deep Learning/Neural Networks/4. Sentdex/Part - 3/Gym.py", line 147, in train_model
model.fit(X, y, batch_size=64, epochs = 5)
File "C:\Users\Tejas\Anaconda3\envs\tensorflow_gpuenv\lib\site-packages\keras\engine\training.py", line 952, in fit
batch_size=batch_size)
File "C:\Users\Tejas\Anaconda3\envs\tensorflow_gpuenv\lib\site-packages\keras\engine\training.py", line 789, in _standardize_user_data
exception_prefix='target')
File "C:\Users\Tejas\Anaconda3\envs\tensorflow_gpuenv\lib\site-packages\keras\engine\training_utils.py", line 102, in standardize_input_data
str(len(data)) + ' arrays: ' + str(data)[:200] + '...')
ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 19570 arrays: [array([[0],
[1]]), array([[1],
[0]]), array([[0],
[1]]), array([[1],
[0]]), array([[1],
[0]]), array([[1],
[0]]), array([[1],
[0]]), array([[0],
...
这是我制作的循环神经网络模型。我认为必须在此处对定义进行一些更改 -
def neural_network_model(input_size):
model = Sequential()
model.add(CuDNNLSTM(128, input_shape=(input_size, 1), return_sequences=True))
model.add(Dropout(0.8))
model.add(CuDNNLSTM(256, return_sequences=True))
model.add(Dropout(0.8))
model.add(CuDNNLSTM(512))
model.add(Dropout(0.8))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.8))
model.add(Dense(2, activation='softmax'))
return model
然后是这个函数所做的模型的训练——
def train_model(training_data, model=False):
X = np.array([i[0] for i in training_data]).reshape(-1,len(training_data[0][0]),1)
y = [i[1] for i in training_data]
print(len(X[0]))
if not model:
model = neural_network_model(input_size = len(X[0]))
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
model.fit(X, y, batch_size=64, epochs = 5)
return model.
我不明白为什么它会给我这个错误。我试过改变输入形状和许多其他的东西,但没有一个能解决我的问题。如果您需要完整的代码,如果您认为这会有所帮助,您可以从这里获取 - Full Code
【问题讨论】:
【参考方案1】:您的目标 y
是一个列表,但它应该是一个 numpy 数组。在拟合您的模型之前尝试使用y = np.array(y)
。
【讨论】:
感谢您的回答。以上是关于为啥我的循环神经网络给我一个错误?的主要内容,如果未能解决你的问题,请参考以下文章
Linq join and count 给我一个错误...不知道为啥 c#
为啥我的 nextcloud 网络驱动器无法连接智能卡丢失错误?
计算机网络CRC检验中为啥选择16或32位效验码,效率最高?