【发布时间】:2023-03-30 06:38:01
【问题描述】:
这个想法是根据我的卷积模型创建一个反卷积模型,以查看学习像素的重要性。
我遇到了无法解释的问题。 首先是当我创建了 3 个模型时,如果我训练卷积模型并测试我的自动模型,一切正常。 而如果我创建我的 3 个模型,然后我加载我的卷积模型(之前训练过),如果我测试我的自动模型,一切看起来好像我没有加载我的卷积模型的权重。 我的第一个问题是如何将权重加载到我的卷积模型中,并在我的汽车模型中考虑它们?
第二个问题可能与第一个问题有关,当我在我的汽车模型上使用 predict 时一切正常,但如果我分解它,它就不起作用。 通过分解,我的意思是用卷积模型对它进行 x_test 预测,然后使用我们得到的结果来预测 deconv 模型。将卷积模型的结果提供给 deconv 模型时出现错误。 "无效参数:您必须为占位符张量 'input_CNN' 提供一个 dtype float 的值"
创建我正在做的汽车模型:
inputs = layers.Input(shape(128,128,1),name='input_CNN')
model_auto = models.Model(inputs,model_deconv(model_conv(inputs)))
如果需要,我可以为您提供更多详细信息。
编辑:
def CNN():
inputs = layers.Input(shape=(128,128,1),name="input_CNN")
layers_CNN = CNN_1_layers(inputs)
model_conv = models.Model(inputs,layers_CNN,name='CNN_1')
model_conv.compile(loss='categorical_crossentropy',optimizer=Adam(), metrics=[accuracy"])
inputs_deconv = layers.Inputs(shape=(1,10),name="input_CNN_deconv")
layers_CNN_deconv = CNN_1_deconv_layers(inputs_deconv)
model_deconv = models.Model(inputs_deconv, layers_CNN_deconv,name="CNN_1_deconv")
model_deconv.compile(loss='categorical_crossentropy',optimize=Adam(), metrics=["accuracy"])
model_auto = models.Model(inputs,model_deconv(model_conv(inputs)))
model_auto.compile(loss='categorical_crossentropy',optimize=Adam(), metrics=["accuracy"])
return model_auto, model_conv, model_deconv
我的model_conv的最后一层:
def CNN_1_layers(inputs):
x = layers.Flattend(input_shape(1,1,10))(x)
x = layers.Dense(10,activation='softmax')(x)
return x
还有反卷积层:
def CNN_1_deconv_layers(inputs_deconv):
x = layers.Reshape((1,1,10))(x)
w1 = tf.get_variable("w1",shape=[4,4,128,10],dtype=tf.float32)
x = layers.Lambda(lambda x: tf.nn.conv2d_transpose(x,w1,output_shape=[1,4,4,128],strides=(1,1,1,1),padding='VALID'),name='deconv_0')(x)
...
return x
def apprentissage(model,nb_epoch=100):
checkpoint = ModelCheckpoint(filepath="CNN_1.h5",monitor='vall_acc', save_best_only=True,save_weights_only=False,mode='auto')
hist= model.fit(train_X, train_y, batch_size=128, nb_epoch=nb_epoch, validation_data=(test_X,test_y), callbacks=[checkpoint])
return hist
我正在使用另一台离线的计算机进行编码,所以我必须手动重写所有内容,所以我正在总结一下。
【问题讨论】:
-
对你的第一个问题:我只是有一个测试建议。创建您的 convolution 模型,加载其权重,然后制作您的 auto 模型。对于你的第二个问题:我想我以前做过类似的事情,我对此没有任何问题。如果可以,请给我们一个最小的 sn-p 来测试并帮助您编写代码
-
我更新了。告诉我你是否需要更多东西。感谢您的帮助
标签: python tensorflow deep-learning deconvolution