Python 如何更改Resnet上的频道数,使其仅在黑白图像上工作?

Python 如何更改Resnet上的频道数,使其仅在黑白图像上工作?,python,tensorflow,keras,artificial-intelligence,cnn,Python,Tensorflow,Keras,Artificial Intelligence,Cnn,我正在研究tensorflow,我的数据集仅由黑白图像组成,因此我认为通过将通道数从3更改为1,可以减轻我的神经网络(目前我正在使用Resnet50)的负担,使其更易于训练和测试, 有没有办法做到这一点? (Ik我可以将黑白图像视为rgb图像,但我不想这样做) 提前感谢您的回答。keras中的预训练权重。应用程序需要3通道输入。你可以从两件事中选择一件: 使用适用于灰度图像的不同预训练模型 设置R、G和B通道以复制BW输入,然后在您自己的数据集上微调整个神经网络。如果没有微调步骤,这可能不起作用

我正在研究tensorflow,我的数据集仅由黑白图像组成,因此我认为通过将通道数从3更改为1,可以减轻我的神经网络(目前我正在使用Resnet50)的负担,使其更易于训练和测试, 有没有办法做到这一点? (Ik我可以将黑白图像视为rgb图像,但我不想这样做)


提前感谢您的回答。

keras中的预训练权重。应用程序需要3通道输入。你可以从两件事中选择一件:

  • 使用适用于灰度图像的不同预训练模型
  • 设置R、G和B通道以复制BW输入,然后在您自己的数据集上微调整个神经网络。如果没有微调步骤,这可能不起作用
  • 另一方面,我必须说,这项任务无助于你实现“减轻负担,使训练和测试更容易”的目标。如果在keras Resnet50上调用
    model.summary()
    ,您会看到,在可训练的23534592个参数中,只有大约10K个位于初始层。因此,您最多可以将参数数量减少数千个


    相反,我建议使用一种更轻的模型,例如在Keras中也可以使用的MobileNet。

    根据,您可以指定输入张量。您是否尝试过在轴2提供尺寸为1的通道,例如(300、300、1)?这应该不是问题:颜色有三个通道;B&W只有一家。在您的输入流中,只需将3通道规格更改为1:如果您看到尺寸大小为3,请将其更改为1。@CaptainTrojan您共享的文档清楚地说明:
    它应该正好有3个输入通道…
    ,因此我认为这不正确possible@Yatin老实说,这只适用于输入形状,而不适用于输入张量。这值得一试,你永远不知道。感谢你的回答,我现在尝试了以下方法:
    model=tf.keras.applications.resnet50.resnet50(weights=“imagenet”,include\u top=False,input\u tensor=tf.constant([img\u width,img\u height,1])
    ,它给了我一个错误:`你不应该把一个急切的张量传递给
    input
    'ValueError:您不应该向
    输入传递一个表达式。例如,您不应该创建InputLayer,而应该实例化您的模型并直接在您的输入中调用它。`谢谢您的回答,我已经以rgb的形式读取了我的图像,但我希望利用图像的黑白特性来减小网络的大小,但显然这是不可能的(或者不是那么直接的)我也尝试过复制粘贴resnet的源代码并进行编辑,但它不起作用,我正在寻找一种更方便的方法来更改我网络中的频道数量,我不知道我是否可以更改为MobileNet,我希望尽可能获得最佳的准确度,如果我也能使用MobileNet达到这一点,请拨打idk