Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras中的Theano与tensorflow后端_Python_Tensorflow_Keras_Deep Learning_Theano - Fatal编程技术网

Python Keras中的Theano与tensorflow后端

Python Keras中的Theano与tensorflow后端,python,tensorflow,keras,deep-learning,theano,Python,Tensorflow,Keras,Deep Learning,Theano,我有一个使用“theano”后端训练的分类器模型。该模型工作正常,我得到了预期的分类性能。tensor大小是Nx3x28x112,但是,我想在另一个文件(main_file.py)中使用相同的分类器,该文件包含一个GANs实现(带有“tensorflow”后端)。因此,我希望在main_file.py中使用相同的Classifier,并更改tensor的输入大小,使其成为Nx28x112x3(这是tensorflow后端的正确输入)。当训练程序开始时,表现并不接近我用“theano”得到的表现,

我有一个使用“theano”后端训练的分类器模型。该模型工作正常,我得到了预期的分类性能。tensor大小是
Nx3x28x112
,但是,我想在另一个文件(main_file.py)中使用相同的分类器,该文件包含一个GANs实现(带有“tensorflow”后端)。因此,我希望在main_file.py中使用相同的Classifier,并更改tensor的输入大小,使其成为
Nx28x112x3
(这是tensorflow后端的正确输入)。当训练程序开始时,表现并不接近我用“theano”得到的表现,而是接近随机表现。我的模型看起来像:

def createModel():

   model = Sequential()
   # The first two layers with 32 filters of window size 3x3
   model.add(Conv2D(28, (3, 3), padding='same', activation='relu', input_shape=(28, 112, 3))) 
   # or input_shape = (3, 28, 112) in case of theano backend
   model.add(Conv2D(28, (3, 3), activation='relu'))
   model.add(MaxPooling2D(pool_size=(2, 2)))
   model.add(Dropout(0.25))
   model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
   model.add(Conv2D(64, (3, 3), activation='relu'))
   model.add(MaxPooling2D(pool_size=(2, 2)))
   model.add(Dropout(0.25))
   model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
   model.add(Conv2D(64, (3, 3), activation='relu'))
   model.add(MaxPooling2D(pool_size=(2, 2)))
   model.add(Dropout(0.25))
   model.add(Flatten())
   model.add(Dense(512, activation='relu'))
   model.add(Dropout(0.5))
   model.add(Dense(256, activation='relu'))
   model.add(Dropout(0.5))
   model.add(Dense(128, activation='relu'))
   model.add(Dropout(0.5))
   model.add(Dense(64, activation='relu'))
   model.add(Dropout(0.5))
   model.add(Dense(nClasses, activation='softmax'))

   return model

我应该怎么做才能使模型正常运行?除了输入张量的顺序外,后端发生变化时是否有任何根本性的区别?

您所说的是刚开始训练时,还是在经过训练的模型上?另外,如何指定后端?Keras默认有
图像数据格式“:“channels\u last”
data\u format='channels\u last'
也是say
Conv2d
Maxpool
层的默认参数。请确保您的后端格式正确。我正在文件开头定义后端。我的生成器和鉴别器是为tensorflow定义的,我想对分类器模型也这样做。但是,我不知道如何正确定义这种情况下的模型。输入数据按上一个顺序重新格式化。@Anakin你说的格式是什么意思?我指的是数据格式。如果您的后端设置为TF,并且输入数据形状和您的一样好,那么它应该可以工作。默认情况下,所有其他内容都设置为TF格式,除非您更改它们。