Keras “获取错误”;属性错误:';模块';对象没有属性';ifelse'&引用;
我正在使用Theano和Keras并使用下面的命令,试图从.h5文件加载VGG Net的权重 VGG网络模型定义:Keras “获取错误”;属性错误:';模块';对象没有属性';ifelse'&引用;,keras,theano,vgg-net,Keras,Theano,Vgg Net,我正在使用Theano和Keras并使用下面的命令,试图从.h5文件加载VGG Net的权重 VGG网络模型定义: def VGG_16(weights_path=None): model = Sequential() model.add(ZeroPadding2D((1,1),input_shape=(3,224,224))) model.add(Convolution2D(64, 3, 3, activation='relu')) model.add(Zero
def VGG_16(weights_path=None):
model = Sequential()
model.add(ZeroPadding2D((1,1),input_shape=(3,224,224)))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(4096, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4096, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1000, activation='softmax'))
if weights_path:
model.load_weights(weights_path)
return model
尝试使用以下命令加载权重
model = VGG_16('vgg16_weights_th_dim_ordering_th_kernels.h5')
并将下面的一个作为错误:
'AttributeError Traceback (most recent call last)
<ipython-input-3-e815cc7d5738> in <module>()
1 #model = VGG_16('vgg16_weights_tf_dim_ordering_tf_kernels.h5')
----> 2 model = VGG_16('vgg16_weights_th_dim_ordering_th_kernels.h5')
3 #sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
4 #model.compile(optimizer=sgd, loss='categorical_crossentropy')
<ipython-input-2-f9b05d09c080> in VGG_16(weights_path)
39 model.add(Flatten())
40 model.add(Dense(4096, activation='relu'))
---> 41 model.add(Dropout(0.5))
42 model.add(Dense(4096, activation='relu'))
43 model.add(Dropout(0.5))
c:\users\sekhar\onedrive\insofe\classes\week17\for_keras\keras-master\keras\models.pyc in add(self, layer)
330 output_shapes=[self.outputs[0]._keras_shape])
331 else:
--> 332 output_tensor = layer(self.outputs[0])
333 if isinstance(output_tensor, list):
334 raise TypeError('All layers in a Sequential model '
c:\users\sekhar\onedrive\insofe\classes\week17\for_keras\keras-master\keras\engine\topology.pyc in __call__(self, x, mask)
570 if inbound_layers:
571 # This will call layer.build() if necessary.
--> 572 self.add_inbound_node(inbound_layers, node_indices, tensor_indices)
573 # Outputs were already computed when calling self.add_inbound_node.
574 outputs = self.inbound_nodes[-1].output_tensors
c:\users\sekhar\onedrive\insofe\classes\week17\for_keras\keras-master\keras\engine\topology.pyc in add_inbound_node(self, inbound_layers, node_indices, tensor_indices)
633 # creating the node automatically updates self.inbound_nodes
634 # as well as outbound_nodes on inbound layers.
--> 635 Node.create_node(self, inbound_layers, node_indices, tensor_indices)
636
637 def get_output_shape_for(self, input_shape):
c:\users\sekhar\onedrive\insofe\classes\week17\for_keras\keras-master\keras\engine\topology.pyc in create_node(cls, outbound_layer, inbound_layers, node_indices, tensor_indices)
164
165 if len(input_tensors) == 1:
--> 166 output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))
167 output_masks = to_list(outbound_layer.compute_mask(input_tensors[0], input_masks[0]))
168 # TODO: try to auto-infer shape
c:\users\sekhar\onedrive\insofe\classes\week17\for_keras\keras-master\keras\layers\core.pyc in call(self, x, mask)
108 def dropped_inputs():
109 return K.dropout(x, self.p, noise_shape, seed=self.seed)
--> 110 x = K.in_train_phase(dropped_inputs, lambda: x)
111 return x
112
c:\users\sekhar\onedrive\insofe\classes\week17\for_keras\keras-master\keras\backend\theano_backend.pyc in in_train_phase(x, alt)
1166 if callable(alt):
1167 alt = alt()
-> 1168 x = theano.ifelse.ifelse(_LEARNING_PHASE, x, alt)
1169 x._uses_learning_phase = True
1170 return x
AttributeError: 'module' object has no attribute 'ifelse'
'AttributeError回溯(最近一次调用)
在()
1#model=VGG_16('vgg16_weights_tf_dim_ordering_tf_kernels.h5'))
---->2模型=VGG_16('vgg16_权重_尺寸_排序_内核.h5'))
3#sgd=sgd(lr=0.1,衰变=1e-6,动量=0.9,nesterov=True)
4#model.compile(优化器=sgd,loss='classifical_crossentropy')
在VGG_16中(权重_路径)
39模型。添加(展平())
40型号。添加(密集型(4096,激活='relu'))
--->41型号。添加(辍学率(0.5))
42型号。添加(密集型(4096,激活='relu'))
43型号。添加(辍学率(0.5))
c:\users\sekhar\onedrive\insofe\classes\week17\for\u keras\keras master\keras\models.pyc in add(self,layer)
330输出形状=[self.outputs[0]。\u keras\u形状])
331其他:
-->332输出张量=层(自输出[0])
333如果存在(输出张量,列表):
334 raise TypeError('序列模型中的所有层'
c:\users\sekhar\onedrive\insofe\classes\week17\for\u keras\keras master\keras\engine\topology.pyc in\uu\u调用(self,x,mask)
570如果入站_层:
571#这将在必要时调用layer.build()。
-->572.添加入站节点(入站层、节点索引、张量索引)
调用self.add#inbound_节点时已计算了573#输出。
574 outputs=self.inbound_节点[-1]。output_张量
c:\users\sekhar\onedrive\insofe\classes\week17\for\u keras\keras master\keras\engine\topology.pyc在add\u inbound\u节点中(self、inbound\u层、节点索引、张量索引)
633#创建节点会自动更新self.inbound_节点
634#以及入站层上的出站#u节点。
-->635节点。创建节点(自、入站层、节点索引、张量索引)
636
637 def get_output_shape_for(自身、输入_shape):
c:\users\sekhar\onedrive\insofe\classes\week17\用于创建\u节点(cls、出站\u层、入站\u层、节点\u索引、张量\u索引)中的\u keras\keras master\keras\engine\topology.pyc
164
165如果len(输入_张量)==1:
-->166输出\张量=到\列表(出站\层.调用(输入\张量[0],掩码=输入\掩码[0]))
167输出\u掩码=到\u列表(出站\u层.计算\u掩码(输入\u张量[0],输入\u掩码[0]))
168#待办事项:尝试自动推断形状
c:\users\sekhar\onedrive\insofe\classes\week17\for\u keras\keras master\keras\layers\core.pyc调用(self,x,mask)
108 def丢弃的_输入()
109返回K.dropout(x,self.p,noise_形状,seed=self.seed)
-->110 x=K.在列车相位(下降输入,λ:x)
111返回x
112
c:\users\sekhar\onedrive\insofe\classes\week17\for\u keras\keras master\keras\backend\theano\u backend.pyc处于列车运行阶段(x,alt)
1166如果可调用(alt):
1167 alt=alt()
->1168 x=theano.ifelse.ifelse(_LEARNING_PHASE,x,alt)
1169 x.\u使用\u学习\u阶段=真
1170返回x
AttributeError:“模块”对象没有属性“ifelse”
这个问题的可能解决方案是什么
我的一位朋友说,除了重新安装Anaconda和Theano之外,别无选择。请转告。简单地尝试一下:
import theano
print theano.ifelse
如果出现错误,您的theano安装很可能是错误的,您应该重新安装
示例输出
<module 'theano.ifelse' from '/usr/local/lib/python2.7/dist-packages/theano/ifelse.pyc'>
简单地尝试一下:
import theano
print theano.ifelse
如果出现错误,您的theano安装很可能是错误的,您应该重新安装
示例输出
<module 'theano.ifelse' from '/usr/local/lib/python2.7/dist-packages/theano/ifelse.pyc'>
您的theano版本对于该版本的Keras来说可能太新了。您应该尝试将theano降级到0.9.x,并至少将Keras升级到2.0。然后它应该工作得很好。您的theano版本对于该版本的Keras来说可能太新了。您应该尝试将theano降级到0.9.x,并将Keras升级到2.0至少是这样。那么它应该工作得很好。转到ano_后端文件
第行:
x = theano.ifelse.ifelse(training, x, alt)
覆盖:
x = ifelse.ifelse(training, x, alt)
并且仍然在Ano_后端文件中:
加:
对不起,用英语说。转到ano\u后端文件 第行:
x = theano.ifelse.ifelse(training, x, alt)
覆盖:
x = ifelse.ifelse(training, x, alt)
并且仍然在Ano_后端文件中:
加:
对不起,英国人。升级keras应该可以让它工作 我也有类似的问题。使用
pip安装keras升级keras
现在下面的版本组合可以工作了
1.0.1
2.1.3
升级KERA应能使其正常工作
我也有类似的问题。使用pip安装keras升级keras
现在下面的版本组合可以工作了
1.0.1
2.1.3
您使用的是哪种Keras和Theano版本?Keras版本是1.2.1,Theano版本是0.10.0beta2。您使用的是哪种Keras和Theano版本?Keras版本是1.2.1,Theano版本是0.10.0beta2。这应该是答案。这应该是答案。