Closed SnowRipple closed 7 years ago
Have you updated it with git address? I also had this problem with 'name' attribute, which was resolved by updating it not with pip but with git, IIRC.
Updated with git pull, Leaky relu still failing:
Traceback (most recent call last):
File "/home/piotr/workspace/vessel_segmentation/drive_pylearn2/cnn_keras.py", line 136, in
Did you reinstall the package?
yes of course: sudo python setup.py install
Then did you check the version by keras.__version__
? Perhaps we all are talking about too basic stuff but that's because layer.name
attributes seem to be added quite recently and by the error message, as you may agree, to update to recent version would be the only solution for this. Or open the core.py file that it the message says and see if it agrees with the up-to-date code on web repo.
I checked keras.version it says 0.3.1, opened core.py it agrees. Removed keras to be sure, pull new changes,reinstalled, Prelu still fails with:
File "build/bdist.linux-x86_64/egg/keras/layers/advanced_activations.py", line 72, in get_output AttributeError: 'PReLU' object has no attribute 'alphas'
Compared Prelu code here and on mt local copy,it's exactly the same. After debugging I can see that Prelu doesn't initialize self.alphas at all, because it doesn't call the build method:
class PReLU(MaskedLayer): '''
Arbitrary. Use the keyword argument `input_shape`
(tuple of integers, does not include the samples axis)
when using this layer as the first layer in a model.
# Output shape
Same shape as the input.
# Arguments:
init: initialization function for the weights.
weights: initial weights, as a list of a single numpy array.
# References:
- [Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification](http://arxiv.org/pdf/1502.01852v1.pdf)
'''
def __init__(self, init='zero', weights=None, **kwargs):
self.init = initializations.get(init)
self.initial_weights = weights
super(PReLU, self).__init__(**kwargs)
def build(self):
input_shape = self.input_shape[1:]
self.alphas = self.init(input_shape)
self.params = [self.alphas]
if self.initial_weights is not None:
self.set_weights(self.initial_weights)
del self.initial_weights
def get_output(self, train):
X = self.get_input(train)
pos = K.relu(X)
neg = self.alphas * (X - abs(X)) * 0.5
return pos + neg
def get_config(self):
config = {"name": self.__class__.__name__,
"init": self.init.__name__}
base_config = super(PReLU, self).get_config()
return dict(list(base_config.items()) + list(config.items()))
That's why get_output() fails. Tried to run build manually but I don't know "input shape" in every layer:
Activation(PReLU().build()), File "build/bdist.linux-x86_64/egg/keras/layers/advanced_activations.py", line 61, in build File "build/bdist.linux-x86_64/egg/keras/layers/core.py", line 142, in input_shape Exception: Layer is not connected. Did you forget to set "input_shape"?
Does it work if you add PReLU like this (without wrapping in in Activation() )?
model.add(Convolution2D(128, 3, 3)) model.add(PReLU()) model.add(Dropout(dropout))
For the record I tried the suggestion by @mrwns and did not wrap PReLU
in an Activation
. That resolved the error.
leakyrelu_alpha = 0.2
gen5 = Conv2D(filters=256, kernel_size=3, strides=1, padding='same')(gen5) gen5 = LeakyReLU(alpha=leakyrelu_alpha)(gen5)#Activation('relu')'or #LeakyReLU(alpha=0.3)
use this, it will solve your problem
My model:
model = Sequential()
input: 34x34 grey channeled
model.add(Flatten())
Note: Keras does automatic shape inference.
Error:
Using Theano backend. Using gpu device 0: GeForce GTX TITAN X (CNMeM is disabled) Loading /home/piotr/workspace/vessel_segmentation/whole_binary_datasets/zipped.pkl... Loaded /home/piotr/workspace/vessel_segmentation/whole_binary_datasets/zipped.pkl in 0:00:16.21 (82893, 1, 34, 34) (82893, 16) max is 2.837531 min is -3.083485 max is 1.000000 min is 0.000000 Traceback (most recent call last): File "/home/piotr/workspace/vessel_segmentation/drive_pylearn2/cnn_keras.py", line 119, in
cnn()
File "/home/piotr/workspace/vessel_segmentation/drive_pylearn2/cnn_keras.py", line 93, in cnn
model.compile(loss='mse', optimizer='adam')
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 433, in compile
self.y_train = self.get_output(train=True)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/containers.py", line 128, in get_output
return self.layers[-1].get_output(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 962, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 1328, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 1328, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 834, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 495, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 637, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 671, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 311, in get_output
X = self.get_input(train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 173, in get_input
previous_output = self.previous.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 672, in get_output
return self.activation(X)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 84, in call
Y = self.get_output(train=train)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/advanced_activations.py", line 72, in get_output
neg = self.alphas * (X - abs(X)) * 0.5
AttributeError: 'PReLU' object has no attribute 'alphas'
I was trying leaky relu before and the error I got was something like : LeakyRelu has no attribute name