Keras ValueError:登录和标签必须具有相同的形状
我在Keras中有一个多层感知器网络,有两个隐藏层Keras ValueError:登录和标签必须具有相同的形状,keras,neural-network,classification,Keras,Neural Network,Classification,我在Keras中有一个多层感知器网络,有两个隐藏层 在尝试训练网络时,我在fit_生成器中得到错误: 错误: ValueError:登录和标签必须具有相同的形状((无,2)与(无,1)) 我的代码是: 将numpy导入为np 进口干酪 从keras导入图层 从keras导入顺序 #定义窗口大小(彩色图像) img_窗口=(32,32,3) #展平窗户形状 输入形状=np.prod(img\U窗口) 打印(输入图形) #定义具有两个隐藏层(神经元)的MLP simpleMLP=顺序( [la
将numpy导入为np
进口干酪
从keras导入图层
从keras导入顺序
#定义窗口大小(彩色图像)
img_窗口=(32,32,3)
#展平窗户形状
输入形状=np.prod(img\U窗口)
打印(输入图形)
#定义具有两个隐藏层(神经元)的MLP
simpleMLP=顺序(
[layers.Input(shape=img_窗口),
layers.flatte(),#将输入conv2D展平为1个向量,这不会影响批量大小。
密集层(输入_shape//2,activation=“relu”),
密集层(输入_shape//2,activation=“relu”),
致密层(2,活化=“S形”),
]
)
#“构建”模型后,调用其summary()方法以显示其内容
simpleMLP.summary()
#初始化
#批量数据的大小,取决于RAM的调整
批量大小=128
纪元=5
#使用3个参数编译MLP模型:损失函数、优化器和度量函数来判断模型性能
compile(loss=“binary\u crossentropy”,optimizer=“adam”,metrics=[“binary\u accurity”])\BCE
#创建ImagedataGenerator以拆分培训、验证数据集
从keras.preprocessing.image导入ImageDataGenerator
列车方向=“/content/train”
列车\数据发生器=图像数据发生器(
重缩放=1./255,#重缩放因子
剪切范围=0.1,
缩放范围=0.1,
水平翻转=真,
填充模式(最近的)
valid_dir='/content/valid'
有效的\u datagen=ImageDataGenerator(
重新缩放=1./255,
剪切范围=0.1,
缩放范围=0.1,
水平翻转=真,
填充模式(最近的)
train_generator=来自目录的train_datagen.flow_(
列车主任,
目标大小=img\u窗口[:2],
批次大小=批次大小,
class_mode='binary',
颜色模式='rgb'
)
验证\u生成器=来自\u目录的有效\u datagen.flow\u(
有效地址:,
目标大小=img\u窗口[:2],
批次大小=批次大小,
class_mode='binary',
颜色(模式为rgb)
#训练MLP模型
simpleMLP.fit_生成器((
列车发电机,
每历元步数=8271//批量大小,
纪元=5,
验证数据=验证生成器,
验证步骤=2072//批量大小)
你能告诉我如何解决这个问题吗?提前谢谢。你的问题很简单,你有形状
(N,1)
的标签和定义为二进制交叉熵
的损失。这意味着你应该在最后一层有一个输出节点。但是你有一个输出两个类的模型
simpleMLP = Sequential(
[...
layers.Dense(2,activation="sigmoid"),
]
)
只需将此更改为
simpleMLP = Sequential(
[...
layers.Dense(1,activation="sigmoid"),
]
)