gpt4 book ai didi

python - Keras 模型通过编译但在运行时因值错误而崩溃

转载 作者:行者123 更新时间:2023-11-30 09:41:43 25 4
gpt4 key购买 nike

我正在尝试创建一个基本的 RNN,用于计算看到的 1 的数量并返回总和。这是我第一次尝试制作 RNN,而且我对 ML 和 Keras 还很陌生,因此非常感谢任何帮助或建议!

我研究了该模型,发现使用嵌入层将一维数据输入 LSTM。这使得模型能够正确编译,但是一旦尝试执行第一个纪元,它就会崩溃。

values = []
answers = []
for i in range(0,5):
random = randint(1,101)
values.append([int(x) for x in bin(random)[2:]])
answers.append(len([ones for ones in values[-1] if ones==1]))
values = np.array(values)
print("shape:",values.shape[0])
print("values:",values)
print("answers:",answers)

RNN = layers.LSTM
model = Sequential()
model.add(layers.Embedding(1, 1, input_length = 1))
model.add(RNN(1,return_sequences=True))
model.add(layers.Flatten())
model.add(layers.Dense(1, activation="relu"))

adam = optimizers.adam(lr=0.01)
model.compile(optimizer=adam,
loss="mean_squared_error")

print (model.summary())
model.fit(values,np.array(answers),epochs=5)

输出:

shape: 5
values: [list([1]) list([1, 0, 1, 1, 1, 1, 0]) list([1, 1, 0, 0, 1])
list([1, 1, 0, 1]) list([1, 0, 0, 0, 1, 0])]
answers: [1, 5, 3, 3, 2]

_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_6 (Embedding) (None, 1, 1) 1
_________________________________________________________________
lstm_33 (LSTM) (None, 1, 1) 12
_________________________________________________________________
flatten_19 (Flatten) (None, 1) 0
_________________________________________________________________
dense_62 (Dense) (None, 1) 2
=================================================================
Total params: 15
Trainable params: 15
Non-trainable params: 0
_________________________________________________________________
None
Epoch 1/5
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)

这些层非常基本,并且在 Flatten() 的帮助下可以很好地相互连接。然而,在运行代码时,我收到一个值错误,但我不太明白为什么。

ValueError                                Traceback (most recent call last)
<ipython-input-129-f5e242474ef9> in <module>
11
12 print (model.summary())
---> 13 model.fit(values,np.array(answers),epochs=5)

~\Anaconda3\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)
1037 initial_epoch=initial_epoch,
1038 steps_per_epoch=steps_per_epoch,
-> 1039 validation_steps=validation_steps)
1040
1041 def evaluate(self, x=None, y=None,

~\Anaconda3\lib\site-packages\keras\engine\training_arrays.py in fit_loop(model, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)
197 ins_batch[i] = ins_batch[i].toarray()
198
--> 199 outs = f(ins_batch)
200 outs = to_list(outs)
201 for l, o in zip(out_labels, outs):

~\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py in __call__(self, inputs)
2713 return self._legacy_call(inputs)
2714
-> 2715 return self._call(inputs)
2716 else:
2717 if py_any(is_tensor(x) for x in inputs):

~\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py in _call(self, inputs)
2653 array_vals.append(
2654 np.asarray(value,
-> 2655 dtype=tf.as_dtype(tensor.dtype).as_numpy_dtype))
2656 if self.feed_dict:
2657 for key in sorted(self.feed_dict.keys()):

~\Anaconda3\lib\site-packages\numpy\core\numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540

ValueError: setting an array element with a sequence.

如果有人有更好的方法来格式化模型/数据或一般建议,请评论或回答。

最佳答案

问题出在 values = np.array(values) 行。在不同长度的列表上调用 np.array 会创建一个奇怪的 numpy 对象数组(不是数字)结构,这些对象是其他带有数字的 numpy 数组。这最终会给出 ValueError

每个数据批处理必须由相同长度的序列组成。如果您不希望 RNN 处理不同长度的序列,这确实是可能的,但您需要添加掩蔽(Ctrl+F 用于 Keras documentation 中的“掩蔽”,并且可能比 更复杂一些顺序

关于python - Keras 模型通过编译但在运行时因值错误而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57865460/

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