getting the weights of intermediate layer in keras The Next CEO of Stack Overflow2019 Community Moderator ElectionHow to Obtain Output of Intermediate Model in KerasHow to Create Shared Weights Layer in KerasKeras: visualizing the output of an intermediate layerDot Product between two Keras intermediate variablesWhat are default keras layer weightsKeras intermediate layer (attention model) outputSimple prediction with KerasValueError: Error when checking target: expected dense_2 to have shape (1,) but got array with shape (0,)Value of loss and accuracy does not change over EpochsImages Score Regression only regresses to the average of the target values

Traduction de « Life is a roller coaster »

Is it OK to decorate a log book cover?

what's the use of '% to gdp' type of variables?

Is it ever safe to open a suspicious HTML file (e.g. email attachment)?

What would be the main consequences for a country leaving the WTO?

Do I need to write [sic] when including a quotation with a number less than 10 that isn't written out?

Is there such a thing as a proper verb, like a proper noun?

Towers in the ocean; How deep can they be built?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Reshaping json / reparing json inside shell script (remove trailing comma)

Man transported from Alternate World into ours by a Neutrino Detector

Is it ok to trim down a tube patch?

(How) Could a medieval fantasy world survive a magic-induced "nuclear winter"?

What difference does it make using sed with/without whitespaces?

Defamation due to breach of confidentiality

Is it professional to write unrelated content in an almost-empty email?

How to use ReplaceAll on an expression that contains a rule

Help/tips for a first time writer?

Is French Guiana a (hard) EU border?

Easy to read palindrome checker

Scary film where a woman has vaginal teeth

How to avoid supervisors with prejudiced views?

Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?

From jafe to El-Guest



getting the weights of intermediate layer in keras



The Next CEO of Stack Overflow
2019 Community Moderator ElectionHow to Obtain Output of Intermediate Model in KerasHow to Create Shared Weights Layer in KerasKeras: visualizing the output of an intermediate layerDot Product between two Keras intermediate variablesWhat are default keras layer weightsKeras intermediate layer (attention model) outputSimple prediction with KerasValueError: Error when checking target: expected dense_2 to have shape (1,) but got array with shape (0,)Value of loss and accuracy does not change over EpochsImages Score Regression only regresses to the average of the target values










4












$begingroup$


I have an image dataset 376 classes each class has 15 pictures corresponds to a person. I would like to get the feature vector that corresponds to each person.



What I have done is, after I compiled the model I then used this link
as a reference to get the weights of the last convolutional layer. However, when I do this, I get the error:



InvalidArgumentError: You must feed a value for placeholder tensor 'conv_layer' with dtype float and shape [?,19,19,360]


How can I resolve this issue?



Here is the code that I have done so far:



train_data = np.array(train_data, dtype=np.float32)
test_data = np.array(test_data, dtype=np.float32)
train_data = train_data / 180 # to make the array values between 0-1
test_data = test_data / 180
train_label = keras.utils.to_categorical(train_label, 376)
test_label = keras.utils.to_categorical(test_label, 376)
# CNN MODEL
model = Sequential()
model.add(Conv2D(180, (3, 3), padding='same', input_shape=(180, 180, 3),
activation="relu")) #180 is the number of filters
model.add(Conv2D(180, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Conv2D(360, (3, 3), padding='same', activation="relu"))
model.add(Conv2D(360, (3, 3), activation="relu"))
conv_layer = model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
flatten_layer = model.add(Flatten())
model.add(Dense(496, activation="relu"))
model.add(Dropout(0.5))
dense_layer = model.add(Dense(376, activation="softmax"))
#compiling the model
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
model.fit(
train_data,
train_label,
batch_size=32,
epochs=40,
verbose = 2 ,
validation_split=0.1,
shuffle=True)
# getting intermediate layer weights
get_layer_output = K.function([model.layers[0].input],
[model.layers[11].output])
layer_output = get_layer_output([conv_layer])[0]









share|improve this question











$endgroup$











  • $begingroup$
    Which layer's output are expecting to keep as face feature vectors?
    $endgroup$
    – Kiritee Gak
    Mar 24 at 14:09










  • $begingroup$
    @KiriteeGak last convolutional layer in this example 7th
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 14:39















4












$begingroup$


I have an image dataset 376 classes each class has 15 pictures corresponds to a person. I would like to get the feature vector that corresponds to each person.



What I have done is, after I compiled the model I then used this link
as a reference to get the weights of the last convolutional layer. However, when I do this, I get the error:



InvalidArgumentError: You must feed a value for placeholder tensor 'conv_layer' with dtype float and shape [?,19,19,360]


How can I resolve this issue?



Here is the code that I have done so far:



train_data = np.array(train_data, dtype=np.float32)
test_data = np.array(test_data, dtype=np.float32)
train_data = train_data / 180 # to make the array values between 0-1
test_data = test_data / 180
train_label = keras.utils.to_categorical(train_label, 376)
test_label = keras.utils.to_categorical(test_label, 376)
# CNN MODEL
model = Sequential()
model.add(Conv2D(180, (3, 3), padding='same', input_shape=(180, 180, 3),
activation="relu")) #180 is the number of filters
model.add(Conv2D(180, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Conv2D(360, (3, 3), padding='same', activation="relu"))
model.add(Conv2D(360, (3, 3), activation="relu"))
conv_layer = model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
flatten_layer = model.add(Flatten())
model.add(Dense(496, activation="relu"))
model.add(Dropout(0.5))
dense_layer = model.add(Dense(376, activation="softmax"))
#compiling the model
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
model.fit(
train_data,
train_label,
batch_size=32,
epochs=40,
verbose = 2 ,
validation_split=0.1,
shuffle=True)
# getting intermediate layer weights
get_layer_output = K.function([model.layers[0].input],
[model.layers[11].output])
layer_output = get_layer_output([conv_layer])[0]









share|improve this question











$endgroup$











  • $begingroup$
    Which layer's output are expecting to keep as face feature vectors?
    $endgroup$
    – Kiritee Gak
    Mar 24 at 14:09










  • $begingroup$
    @KiriteeGak last convolutional layer in this example 7th
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 14:39













4












4








4





$begingroup$


I have an image dataset 376 classes each class has 15 pictures corresponds to a person. I would like to get the feature vector that corresponds to each person.



What I have done is, after I compiled the model I then used this link
as a reference to get the weights of the last convolutional layer. However, when I do this, I get the error:



InvalidArgumentError: You must feed a value for placeholder tensor 'conv_layer' with dtype float and shape [?,19,19,360]


How can I resolve this issue?



Here is the code that I have done so far:



train_data = np.array(train_data, dtype=np.float32)
test_data = np.array(test_data, dtype=np.float32)
train_data = train_data / 180 # to make the array values between 0-1
test_data = test_data / 180
train_label = keras.utils.to_categorical(train_label, 376)
test_label = keras.utils.to_categorical(test_label, 376)
# CNN MODEL
model = Sequential()
model.add(Conv2D(180, (3, 3), padding='same', input_shape=(180, 180, 3),
activation="relu")) #180 is the number of filters
model.add(Conv2D(180, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Conv2D(360, (3, 3), padding='same', activation="relu"))
model.add(Conv2D(360, (3, 3), activation="relu"))
conv_layer = model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
flatten_layer = model.add(Flatten())
model.add(Dense(496, activation="relu"))
model.add(Dropout(0.5))
dense_layer = model.add(Dense(376, activation="softmax"))
#compiling the model
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
model.fit(
train_data,
train_label,
batch_size=32,
epochs=40,
verbose = 2 ,
validation_split=0.1,
shuffle=True)
# getting intermediate layer weights
get_layer_output = K.function([model.layers[0].input],
[model.layers[11].output])
layer_output = get_layer_output([conv_layer])[0]









share|improve this question











$endgroup$




I have an image dataset 376 classes each class has 15 pictures corresponds to a person. I would like to get the feature vector that corresponds to each person.



What I have done is, after I compiled the model I then used this link
as a reference to get the weights of the last convolutional layer. However, when I do this, I get the error:



InvalidArgumentError: You must feed a value for placeholder tensor 'conv_layer' with dtype float and shape [?,19,19,360]


How can I resolve this issue?



Here is the code that I have done so far:



train_data = np.array(train_data, dtype=np.float32)
test_data = np.array(test_data, dtype=np.float32)
train_data = train_data / 180 # to make the array values between 0-1
test_data = test_data / 180
train_label = keras.utils.to_categorical(train_label, 376)
test_label = keras.utils.to_categorical(test_label, 376)
# CNN MODEL
model = Sequential()
model.add(Conv2D(180, (3, 3), padding='same', input_shape=(180, 180, 3),
activation="relu")) #180 is the number of filters
model.add(Conv2D(180, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Conv2D(360, (3, 3), padding='same', activation="relu"))
model.add(Conv2D(360, (3, 3), activation="relu"))
conv_layer = model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
flatten_layer = model.add(Flatten())
model.add(Dense(496, activation="relu"))
model.add(Dropout(0.5))
dense_layer = model.add(Dense(376, activation="softmax"))
#compiling the model
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
model.fit(
train_data,
train_label,
batch_size=32,
epochs=40,
verbose = 2 ,
validation_split=0.1,
shuffle=True)
# getting intermediate layer weights
get_layer_output = K.function([model.layers[0].input],
[model.layers[11].output])
layer_output = get_layer_output([conv_layer])[0]






machine-learning deep-learning keras cnn image-recognition






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 24 at 16:14









Ethan

602324




602324










asked Mar 24 at 12:47









Alfaisal AlbakriAlfaisal Albakri

235




235











  • $begingroup$
    Which layer's output are expecting to keep as face feature vectors?
    $endgroup$
    – Kiritee Gak
    Mar 24 at 14:09










  • $begingroup$
    @KiriteeGak last convolutional layer in this example 7th
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 14:39
















  • $begingroup$
    Which layer's output are expecting to keep as face feature vectors?
    $endgroup$
    – Kiritee Gak
    Mar 24 at 14:09










  • $begingroup$
    @KiriteeGak last convolutional layer in this example 7th
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 14:39















$begingroup$
Which layer's output are expecting to keep as face feature vectors?
$endgroup$
– Kiritee Gak
Mar 24 at 14:09




$begingroup$
Which layer's output are expecting to keep as face feature vectors?
$endgroup$
– Kiritee Gak
Mar 24 at 14:09












$begingroup$
@KiriteeGak last convolutional layer in this example 7th
$endgroup$
– Alfaisal Albakri
Mar 24 at 14:39




$begingroup$
@KiriteeGak last convolutional layer in this example 7th
$endgroup$
– Alfaisal Albakri
Mar 24 at 14:39










1 Answer
1






active

oldest

votes


















3












$begingroup$

The easiest way to create a truncated output from a network is create a sub-network of it and apply weights of your trained network. The following example is a modification of what you have shown up there, but it will guide you out



Network you want to train originally




model = Sequential()
model.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model.add(Conv2D(10, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(5, activation="softmax"))
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

model.fit(
train_data,
train_label)


Now create a subnetwork from which you want the outputs, like from above example




model_new = Sequential()
model_new.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model_new.add(Conv2D(10, (3, 3), activation="relu"))
model_new.add(MaxPooling2D(pool_size=(3, 3)))
model_new.add(Dropout(0.25))
model_new.add(Flatten())

model_new.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['mse'])

# You need to apply fit on random array's created, just so as to initialise
# weights. Anyways you will replacing them with original ones from above.
model_new.fit(train_data, y=np.random.rand(40, 3610))


Now take weights from the first trained network and replace the weights of the second network like




model_new.set_weights(weights=model.get_weights())


You can check whether the weights are changed in the above step by actually adding these check statements like




print("Are arrays equal before fit - ",
any([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))

model_new.set_weights(weights=model.get_weights())
print("Are arrays equal after applying weights - ",
all([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))


This should yeild




Are arrays equal before fit - False
Are arrays equal after applying weights - True


Hope this helps.






share|improve this answer











$endgroup$












  • $begingroup$
    works perfectly thanks . one more question , how do i know which array corresponds to image class?
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 18:13










  • $begingroup$
    What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
    $endgroup$
    – Kiritee Gak
    Mar 24 at 18:25











Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "557"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47895%2fgetting-the-weights-of-intermediate-layer-in-keras%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3












$begingroup$

The easiest way to create a truncated output from a network is create a sub-network of it and apply weights of your trained network. The following example is a modification of what you have shown up there, but it will guide you out



Network you want to train originally




model = Sequential()
model.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model.add(Conv2D(10, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(5, activation="softmax"))
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

model.fit(
train_data,
train_label)


Now create a subnetwork from which you want the outputs, like from above example




model_new = Sequential()
model_new.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model_new.add(Conv2D(10, (3, 3), activation="relu"))
model_new.add(MaxPooling2D(pool_size=(3, 3)))
model_new.add(Dropout(0.25))
model_new.add(Flatten())

model_new.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['mse'])

# You need to apply fit on random array's created, just so as to initialise
# weights. Anyways you will replacing them with original ones from above.
model_new.fit(train_data, y=np.random.rand(40, 3610))


Now take weights from the first trained network and replace the weights of the second network like




model_new.set_weights(weights=model.get_weights())


You can check whether the weights are changed in the above step by actually adding these check statements like




print("Are arrays equal before fit - ",
any([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))

model_new.set_weights(weights=model.get_weights())
print("Are arrays equal after applying weights - ",
all([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))


This should yeild




Are arrays equal before fit - False
Are arrays equal after applying weights - True


Hope this helps.






share|improve this answer











$endgroup$












  • $begingroup$
    works perfectly thanks . one more question , how do i know which array corresponds to image class?
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 18:13










  • $begingroup$
    What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
    $endgroup$
    – Kiritee Gak
    Mar 24 at 18:25















3












$begingroup$

The easiest way to create a truncated output from a network is create a sub-network of it and apply weights of your trained network. The following example is a modification of what you have shown up there, but it will guide you out



Network you want to train originally




model = Sequential()
model.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model.add(Conv2D(10, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(5, activation="softmax"))
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

model.fit(
train_data,
train_label)


Now create a subnetwork from which you want the outputs, like from above example




model_new = Sequential()
model_new.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model_new.add(Conv2D(10, (3, 3), activation="relu"))
model_new.add(MaxPooling2D(pool_size=(3, 3)))
model_new.add(Dropout(0.25))
model_new.add(Flatten())

model_new.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['mse'])

# You need to apply fit on random array's created, just so as to initialise
# weights. Anyways you will replacing them with original ones from above.
model_new.fit(train_data, y=np.random.rand(40, 3610))


Now take weights from the first trained network and replace the weights of the second network like




model_new.set_weights(weights=model.get_weights())


You can check whether the weights are changed in the above step by actually adding these check statements like




print("Are arrays equal before fit - ",
any([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))

model_new.set_weights(weights=model.get_weights())
print("Are arrays equal after applying weights - ",
all([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))


This should yeild




Are arrays equal before fit - False
Are arrays equal after applying weights - True


Hope this helps.






share|improve this answer











$endgroup$












  • $begingroup$
    works perfectly thanks . one more question , how do i know which array corresponds to image class?
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 18:13










  • $begingroup$
    What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
    $endgroup$
    – Kiritee Gak
    Mar 24 at 18:25













3












3








3





$begingroup$

The easiest way to create a truncated output from a network is create a sub-network of it and apply weights of your trained network. The following example is a modification of what you have shown up there, but it will guide you out



Network you want to train originally




model = Sequential()
model.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model.add(Conv2D(10, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(5, activation="softmax"))
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

model.fit(
train_data,
train_label)


Now create a subnetwork from which you want the outputs, like from above example




model_new = Sequential()
model_new.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model_new.add(Conv2D(10, (3, 3), activation="relu"))
model_new.add(MaxPooling2D(pool_size=(3, 3)))
model_new.add(Dropout(0.25))
model_new.add(Flatten())

model_new.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['mse'])

# You need to apply fit on random array's created, just so as to initialise
# weights. Anyways you will replacing them with original ones from above.
model_new.fit(train_data, y=np.random.rand(40, 3610))


Now take weights from the first trained network and replace the weights of the second network like




model_new.set_weights(weights=model.get_weights())


You can check whether the weights are changed in the above step by actually adding these check statements like




print("Are arrays equal before fit - ",
any([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))

model_new.set_weights(weights=model.get_weights())
print("Are arrays equal after applying weights - ",
all([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))


This should yeild




Are arrays equal before fit - False
Are arrays equal after applying weights - True


Hope this helps.






share|improve this answer











$endgroup$



The easiest way to create a truncated output from a network is create a sub-network of it and apply weights of your trained network. The following example is a modification of what you have shown up there, but it will guide you out



Network you want to train originally




model = Sequential()
model.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model.add(Conv2D(10, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(5, activation="softmax"))
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

model.fit(
train_data,
train_label)


Now create a subnetwork from which you want the outputs, like from above example




model_new = Sequential()
model_new.add(Conv2D(10, (3, 3), padding='same', input_shape=(60, 60, 3),
activation="relu"))
model_new.add(Conv2D(10, (3, 3), activation="relu"))
model_new.add(MaxPooling2D(pool_size=(3, 3)))
model_new.add(Dropout(0.25))
model_new.add(Flatten())

model_new.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['mse'])

# You need to apply fit on random array's created, just so as to initialise
# weights. Anyways you will replacing them with original ones from above.
model_new.fit(train_data, y=np.random.rand(40, 3610))


Now take weights from the first trained network and replace the weights of the second network like




model_new.set_weights(weights=model.get_weights())


You can check whether the weights are changed in the above step by actually adding these check statements like




print("Are arrays equal before fit - ",
any([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))

model_new.set_weights(weights=model.get_weights())
print("Are arrays equal after applying weights - ",
all([np.array_equal(a1, a2) for a1, a2 in zip(model_new.get_weights(), model.get_weights()[:4])]))


This should yeild




Are arrays equal before fit - False
Are arrays equal after applying weights - True


Hope this helps.







share|improve this answer














share|improve this answer



share|improve this answer








edited Mar 24 at 18:26

























answered Mar 24 at 16:34









Kiritee GakKiritee Gak

1,3591421




1,3591421











  • $begingroup$
    works perfectly thanks . one more question , how do i know which array corresponds to image class?
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 18:13










  • $begingroup$
    What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
    $endgroup$
    – Kiritee Gak
    Mar 24 at 18:25
















  • $begingroup$
    works perfectly thanks . one more question , how do i know which array corresponds to image class?
    $endgroup$
    – Alfaisal Albakri
    Mar 24 at 18:13










  • $begingroup$
    What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
    $endgroup$
    – Kiritee Gak
    Mar 24 at 18:25















$begingroup$
works perfectly thanks . one more question , how do i know which array corresponds to image class?
$endgroup$
– Alfaisal Albakri
Mar 24 at 18:13




$begingroup$
works perfectly thanks . one more question , how do i know which array corresponds to image class?
$endgroup$
– Alfaisal Albakri
Mar 24 at 18:13












$begingroup$
What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
$endgroup$
– Kiritee Gak
Mar 24 at 18:25




$begingroup$
What do you mean by array? Are you saying output of a filter? You accurately cannot find it. Remember after flattening you have a huge vector and you mapped all of them with some weight onto low dim. using dense layers. So any of the values from the filters would have contributed to the class weight.
$endgroup$
– Kiritee Gak
Mar 24 at 18:25

















draft saved

draft discarded
















































Thanks for contributing an answer to Data Science Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47895%2fgetting-the-weights-of-intermediate-layer-in-keras%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Marja Vauras Lähteet | Aiheesta muualla | NavigointivalikkoMarja Vauras Turun yliopiston tutkimusportaalissaInfobox OKSuomalaisen Tiedeakatemian varsinaiset jäsenetKasvatustieteiden tiedekunnan dekaanit ja muu johtoMarja VaurasKoulutusvienti on kestävyys- ja ketteryyslaji (2.5.2017)laajentamallaWorldCat Identities0000 0001 0855 9405n86069603utb201588738523620927

Which is better: GPT or RelGAN for text generation?2019 Community Moderator ElectionWhat is the difference between TextGAN and LM for text generation?GANs (generative adversarial networks) possible for text as well?Generator loss not decreasing- text to image synthesisChoosing a right algorithm for template-based text generationHow should I format input and output for text generation with LSTMsGumbel Softmax vs Vanilla Softmax for GAN trainingWhich neural network to choose for classification from text/speech?NLP text autoencoder that generates text in poetic meterWhat is the interpretation of the expectation notation in the GAN formulation?What is the difference between TextGAN and LM for text generation?How to prepare the data for text generation task

Is this part of the description of the Archfey warlock's Misty Escape feature redundant?When is entropic ward considered “used”?How does the reaction timing work for Wrath of the Storm? Can it potentially prevent the damage from the triggering attack?Does the Dark Arts Archlich warlock patrons's Arcane Invisibility activate every time you cast a level 1+ spell?When attacking while invisible, when exactly does invisibility break?Can I cast Hellish Rebuke on my turn?Do I have to “pre-cast” a reaction spell in order for it to be triggered?What happens if a Player Misty Escapes into an Invisible CreatureCan a reaction interrupt multiattack?Does the Fiend-patron warlock's Hurl Through Hell feature dispel effects that require the target to be on the same plane as the caster?What are you allowed to do while using the Warlock's Eldritch Master feature?