我正在运行一个CNN,检查图像,但不分类。事实上,输出层是一个密集层,其参数为1d中标签中图像的大小。
如下面的代码所示,我使用model.fit_generator()而不是model.fit,当开始训练模型时,会出现以下错误:
ValueError: Error when checking target: expected dense_10 to have shape
(1,) but got array with shape (19316,)
为什么这是一个错误?我的密度的输出是一个19316元素的数组,为什么它期望它有一个(1,)的形状?
此处还附上了模型的摘要:
conv2d_28(Conv2D)(无,26, 877, 32) 544
激活37(激活)(无,26877,32)0
最大池2D池28(最大池(无、13、438、32)0
conv2d_29(conv2d)(无、12437、16)2064
activation_38(激活)(无,12, 437, 16) 0
最大池2D池29(最大池(无、6218、16)0
conv2d_30(conv2d)(无、5217、8)520
激活39(激活)(无,5217,8)0
最大池2D池30(最大池(无、2、108、8)0
activation_40(激活)(无,2, 108, 8) 0
flatten_10(压平)(无,1728)0
辍学10(辍学)(无,1728)0
密级(密级)(无,19316)33397364
=================================================================
总参数:33400492可培训参数:33400492不可培训参数:0
有什么建议吗?
提前多谢!
def generator(data_arr, batch_size = 10):
num = len(data_arr)
if num % batch_size != 0 :
num = int(num/batch_size)
# Loop forever so the generator never terminates
while True:
for offset in range(0, num, batch_size):
batch_samples = (data_arr[offset:offset+batch_size])
samples = []
labels = []
for batch_sample in batch_samples:
samples.append(batch_sample[0])
labels.append((np.array(batch_sample[1].flatten)).transpose())
X_ = np.array(samples)
Y_ = np.array(labels)
X_ = X_[:, :, :, newaxis]
print(X_.shape)
print(Y_.shape)
yield (X_, Y_)
# compile and train the model using the generator function
train_generator = generator(training_data, batch_size = 10)
validation_generator = generator(val_data, batch_size = 10)
run_opts = tf.RunOptions(report_tensor_allocations_upon_oom = True)
model = Sequential()
model.add(Conv2D(32, (4, 4), strides=(2, 2), input_shape = (55, 1756,
1)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Conv2D(16, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Conv2D(8, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Activation('softmax'))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature
vectors
model.add(Dropout(0.3))
model.add(Dense(19316))
model.compile(loss = 'sparse_categorical_crossentropy',
optimizer = 'adam',
metrics = ['accuracy'],
options = run_opts)
model.summary()
batch_size = 20
nb_epoch = 6
model.fit_generator(train_generator,
steps_per_epoch = len(training_data) ,
epochs = nb_epoch,
validation_data = validation_generator,
validation_steps = len(val_data))
您当前使用的是sparse\u categorical\u crossentropy
loss,它需要整数标签并在内部执行一个热编码,但您的标签已经是一个热编码。
因此,对于这种情况,您应该返回到分类交叉熵
损失。
当我使用澳大利亚数据集编写降雨预测代码时,我在拟合ann模型并运行10的纪元值时遇到了错误。我使用numpy、熊猫、matplotlib、seborn等库作为导入。对于模型的运行,我使用Keras进行密集和顺序搜索。我还使用标准标量来标准化x的值。我得到了这一行的错误-ann.fit(x_train,y_train,batch_size=10,nb_epoch=10,详细=1)下面是我的错误-Va
问题内容: 我正在尝试使用学习的.h5文件进行预测。学习模型如下。 我将输入的形式编写如下。 我以为形状正确,但是发生以下错误。 ValueError:检查时出错:预期density_1_input的形状为(3,),但数组的形状为(1,) 的形状显然是,但上述错误并没有消失(数据来自的CSV文件)。 我怎么解决这个问题? 问题答案: x的形状显然是,但上述误差仍在继续。 您是对的,但这 不是 ke
问题内容: 嗨,我正在为一类分类构建图像分类器,其中在运行此模型时使用了自动编码器,我在此行得到此错误(autoencoder_model.fit)(ValueError:检查目标时出错:预期model_2具有形状(无,252,252,1)但得到形状为(300,128,128,3)的数组。) 问题答案: 解码器的输出形状与训练数据的形状之间根本不兼容。(目标表示输出)。 我看到您有2个MaxPoo
我完成了对我的模型的培训,该模型由20个类组成,精度达到0.9993,目前正在进行测试。我正在学习本教程,但我在 培训数据定义为: 这就是我对cnn的定义 这里也是我对我的模型的总结 我得到的错误是 ---------------------------------------------------------------------------中的ValueError回溯(最近一次调用)---
这是我制作的简单的cnn架构。我使用的图像是灰度图。 如果我将通道值指定为粗体分类器中指定的1。添加(卷积2d(32,kernel\u size=3,input\u shape=(50,50,1),激活='relu')) Im获取错误为 检查输入时出错:预期conv2d\u 1\u输入具有形状(50,50,1),但获得具有形状(50,50,3)的数组 但是如果我使用过滤器大小为3,我不会得到任何错
我使用imdb示例创建了LSTM模型,并尝试用我自己的字符串预测情绪 但是当我试图做预测时,我被跟踪跟踪弄错了 Traceback(最近的调用最后): 文件“”,第1行,在runfile中('C:/Users/Radosław/nauka/python/motionanalysis/motionconsole.py',wdir='C:/Users/Radosław/nauka/python/mot