Tensorflow 为什么所有结果都是一样的

Tensorflow 为什么所有结果都是一样的,tensorflow,neural-network,keras,artificial-intelligence,conv-neural-network,Tensorflow,Neural Network,Keras,Artificial Intelligence,Conv Neural Network,我在Keras的CNN代码有问题 建立简单的神经网络结构并运行预测功能后 所有的预测都有相同的结果 我自己的数据分为两类(健康、不健康) 我以前认为问题在于图片的复杂性 但当我在另一个数据中应用代码时(白色图像,黑色图像) 我发现了同样的结果 你认为问题的原因是什么 我的体系结构CNN代码 #批量大小可供培训 批量大小=32 #输出类的数量 nb_类=2 #要训练的纪元数 nb_epoch=2 #要使用的卷积滤波器的数量 nb_过滤器=32 #最大池的池区域大小 nb_池=2 #卷积核大小 n

我在Keras的CNN代码有问题 建立简单的神经网络结构并运行预测功能后 所有的预测都有相同的结果 我自己的数据分为两类(健康、不健康) 我以前认为问题在于图片的复杂性 但当我在另一个数据中应用代码时(白色图像,黑色图像) 我发现了同样的结果 你认为问题的原因是什么


我的体系结构CNN代码

#批量大小可供培训
批量大小=32
#输出类的数量
nb_类=2
#要训练的纪元数
nb_epoch=2
#要使用的卷积滤波器的数量
nb_过滤器=32
#最大池的池区域大小
nb_池=2
#卷积核大小
nb_conv=3
隐藏层=4
sgd=sgd(lr=0.5,衰变=1e-6,动量=0.6,nesterov=True)
Y_列=np_实用到分类(Y_列,nb_类)
Y_测试=np_实用到_分类(Y_测试,nb_类)
X_列/=255
X_检验/=255
#第一组CONV=>RELU=>POOL层
模型=顺序()
model.add(Conv2D(20,(5,5),padding=“相同”,
输入(形状=形状)
添加(激活(“relu”))
添加(maxPoolg2D(池大小=(池大小,池大小),跨步=(2,2)))
#第二组CONV=>RELU=>POOL层
model.add(Conv2D(50,(5,5),padding=“same”))
添加(激活(“relu”))
添加(maxPoolg2D(池大小=(池大小,池大小),跨步=(2,2)))
模型。添加(辍学率(0.5))
#第一组(也是唯一一组)FC=>RELU层
model.add(展平())
模型.添加(密度(128))
添加(激活('relu'))
#模型。添加(辍学率(0.5))
#softmax分类器
模型添加(密集(nb_类))
模型添加(激活(K.sigmoid))
#范畴交叉熵
compile(loss=“binary\u crossentropy”,optimizer=sgd,metrics=[“accurity”])

结果

由于您有一个最终的sigmoid层,并且正在使用
二进制交叉熵
,请尝试将标签编码为0和1的Nx1向量

下面的几行将它们转换为Nx2矢量,通常与最终的softmax层一起使用

Y_train = np_utils.to_categorical(Y_train, nb_classes)
Y_test = np_utils.to_categorical(Y_test, nb_classes)

如果
Y\u列
Y\u测试
已经是0和1的Nx1,试着把上面的几行注释出来。

Y_列和Y_测试的形状是什么?Y_列和Y_测试的形状是Nx2,但当我试图保持它为Nx1时,我得到了错误值错误:检查目标时出错:预期激活_144具有形状(2),但得到了具有形状(1)的数组尝试将
nb\u类
更改为1。