【发布时间】:2021-09-22 14:16:36
【问题描述】:
我想创建一个具有多个输出的神经网络。有了一个结论,我成功地做到了这一点,但有两个 - 它不起作用。你能帮我吗?您知道任何带有 keras 示例的资源吗?我附上下面的代码和错误。 (对不起,我的英文是谷歌翻译的)
代码:
from keras.models import Sequential
from keras.layers import Dense
x = [[1, 1, 1, 1], [0, 1, 1, 0], [1, 0, 0, 1], [0, 0, 0, 0], [1, 1, 0, 0], [0, 1, 1, 1], [1, 1, 1, 0], [1, 0, 0, 0]]
y = [[1, 1], [0, 0], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 0]]
model = Sequential()
# model.add(Dense(3, activation='sigmoid'))
model.add(Dense(2, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=keras.optimizers.Adam(1e-1), metrics=['accuracy'])
model.fit(x, y, epochs=20)
model.predict(x=[[0, 0, 1, 1]])
错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-77-c805cf1cd17e> in <module>()
3 x = [[1, 1, 1, 1], [0, 1, 1, 0], [1, 0, 0, 1], [0, 0, 0, 0], [1, 1, 0, 0], [0, 1, 1, 1], [1, 1, 1, 0], [1, 0, 0, 0]]
4 y = [[1, 1], [0, 0], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 0]]
----> 5 model = Sequential(input=x, output=y)
6 # model.add(Dense(3, activation='sigmoid'))
7 model.add(Dense(2, activation='sigmoid'))
/usr/local/lib/python3.7/dist-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
520 self._self_setattr_tracking = False # pylint: disable=protected-access
521 try:
--> 522 result = method(self, *args, **kwargs)
523 finally:
524 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
TypeError: __init__() got an unexpected keyword argument 'input'
UPD。 我按照 cmets 中的建议重新编写了代码,但现在,每次训练时,它都会输出某种不在 0 - 1 范围内的随机结果。
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense
x = [[0, 0], [0, 1], [1, 0], [1, 1]]
y = [[1, 1], [1, 0], [0, 1], [0, 0]]
visible = Input(shape=(2,))
hidden = Dense(2)(visible)
# hidden2 = Dense(2)(visible)
model = Model(inputs=visible, outputs=[hidden])
model.compile(loss='binary_crossentropy', metrics=['accuracy'])
model.fit(x, y, epochs=8)
model.predict(x=[[1, 0]])
【问题讨论】:
-
ValueError:传递给模型的输入列表是多余的。所有输入应该只出现一次。找到:[1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1 , 1, 1, 1, 0, 1, 0, 0, 0]
-
Mode(...) 是 Model(...)?
-
什么是 [out1, out2]? [[out1fortest1, out2fortest1], [out1fortest2, out2fortest2]]?
-
你能给我举个例子吗?
-
Keras 文档对此进行了介绍,请参阅keras.io/guides/functional_api/… 如果文档可以回答,则无需在这里提问。
标签: python python-3.x tensorflow keras neural-network