gpt4 book ai didi

python - Keras 中的输出维度太多

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:56 25 4
gpt4 key购买 nike

我试图在 Keras 中制作一个神经网络,但在这样做时遇到了一个问题:网络的输出大小与我想要的输出大小不同,它是一个数字。我尝试通过添加一个 Dense 层并将“units”参数设置为 1 来做到这一点。但是,由于输入数据的额外维度,我仍然得到形状输出 (None, 13, 8, 1) .

import numpy
from keras.layers import Conv2D, Input, Dense
from keras.models import Model
from keras.optimizers import SGD


def make_training_data():
input_training_data = []
for i in range(6):
a = []
for j in range(13):
b = []
for k in range(8):
c = []
for l in range(8):
c.append(0)
b.append(c)
a.append(b)
input_training_data.append(a)

output_training_data = []
for i in range(6):
output_training_data.append(0)

return input_training_data, output_training_data


def make_neural_net():
input = Input((13, 8, 8))
output = Conv2D(256, (3, 3), input_shape=(13, 8, 8), padding='same')(input)
output = Dense(1)(output)
return Model(outputs=output, inputs=input)


def main():
input_training_data, output_training_data = make_training_data()
neural_net = make_neural_net()
input_training_data = numpy.array(input_training_data)
output_training_data = numpy.array(output_training_data)
sgd = SGD(0.2, 0.9)
neural_net.compile(sgd, 'categorical_crossentropy', metrics=['accuracy'])
neural_net.fit(input_training_data, output_training_data, epochs=1)


main()

如何更改我的网络以获得正确大小的输出?

最佳答案

在将卷积层转换为一维张量之前,您需要展平张量。

替换:

output = Dense(1)(output)

与:

output = Flatten()(output)
output = Dense(1)(output)`

keras.layers.Flatten导入它

此外,由于您有 1 个输出神经元,因此您需要将激活函数更改为 'sparse_categorical_crossentropy'

关于python - Keras 中的输出维度太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59204132/

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