首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用2D输出训练ANN

用2D输出训练ANN
EN

Stack Overflow用户
提问于 2021-06-23 23:58:12
回答 1查看 29关注 0票数 0

我正在尝试用2D目标训练一个ANN,格式如下: targets= (1,0,0),(0,1,0),(1,0,0)我的特征大小是(5996,5),目标是(5996,3),我尝试使用以下代码:

代码语言:javascript
复制
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)

但是我收到了这个错误:

代码语言:javascript
复制
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

你能帮我一下吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 04:10:24

尝试9个元素的一维输出,然后在ANN完成后将数据转换为二维数据。

代码语言:javascript
复制
# 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中立即产生的数据不会与目标数据匹配,但简单的转换将纠正任何错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68103337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档