我正在尝试用2D目标训练一个ANN,格式如下: targets= (1,0,0),(0,1,0),(1,0,0)我的特征大小是(5996,5),目标是(5996,3),我尝试使用以下代码:
num_outputs = 3
num_elements = 3
ann.add(tf.keras.layers.Dense(units=8,activation="relu"))
ann.add(tf.keras.layers.Dropout(0.2))
ann.add(tf.keras.layers.Dense(units=64,activation="relu"))
ann.add(tf.keras.layers.Dense(units=8,activation="relu"))
ann.add(tf.keras.layers.Dense(units=1,activation="sigmoid"))
ann.add(tf.keras.layers.RepeatVector(num_outputs))
ann.add(tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(num_elements)))
ann.compile(optimizer='adam',loss = 'binary_crossentropy',metrics=['accuracy'])
ann_history=ann.fit(X_trn, y_trn, batch_size = 25, epochs = 100)但是我收到了这个错误:
InvalidArgumentError: Incompatible shapes: [25,3] vs. [25,3,3]
[[node gradient_tape/binary_crossentropy/mul/BroadcastGradientArgs (defined at <ipython-input-102-9ad8105af048>:1) ]] [Op:__inference_train_function_103981]函数调用栈: train_function
你能帮我一下吗?谢谢。
发布于 2021-06-24 04:10:24
尝试9个元素的一维输出,然后在ANN完成后将数据转换为二维数据。
# replace this line
ann.add(tf.keras.layers.Dense(units=1,activation="sigmoid"))
# with this line
ann.add(tf.keras.layers.Dense(units=9,activation="sigmoid"))作为一个通用的逼近器,ANN应该给你正确的结果。这种解决方案的唯一问题是,在训练和测试时,您必须创建额外的步骤,因为从ANN中立即产生的数据不会与目标数据匹配,但简单的转换将纠正任何错误。
https://stackoverflow.com/questions/68103337
复制相似问题