title: How to get values of penultimate layer in convolutional neural network(CNN)?
body: <p>I am trying to implement CNN for a classification task. I want to see the how the weights are being optimized at each epoch. To do so, I need the values of penultimate layer. Also, I will hard code the last layer and backpropagation myself.  Please recommend APIs also which which will be helpful.  </p>
  
  <p><strong>Edit:</strong> I have added a code from keras examples. Looking forward to edit it.
  <a href="https://keras.io/getting-started/faq/#how-can-i-obtain-the-output-of-an-intermediate-layer" rel="nofollow noreferrer">This</a> link provide some hint. I have mentioned the layer after which I require the output.</p>
  
  <pre><code>from __future__ import print_function
  
  from keras.preprocessing import sequence
  from keras.models import Sequential
  from keras.layers import Dense, Dropout, Activation
  from keras.layers import Embedding
  from keras.layers import Conv1D, GlobalMaxPooling1D
  from keras.datasets import imdb
  
  # set parameters:
  max_features = 5000
  maxlen = 400
  batch_size = 100
  embedding_dims = 50
  filters = 250
  kernel_size = 3
  hidden_dims = 250
  epochs = 100
  
  print('Loading data...')
  (x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
  print(len(x_train), 'train sequences')
  print(len(x_test), 'test sequences')
  
  print('Pad sequences (samples x time)')
  x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
  x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
  print('x_train shape:', x_train.shape)
  print('x_test shape:', x_test.shape)
  
  print('Build model...')
  model = Sequential()
  
  # we start off with an efficient embedding layer which maps
  # our vocab indices into embedding_dims dimensions
  model.add(Embedding(max_features,
                      embedding_dims,
                      input_length=maxlen))
  model.add(Dropout(0.2))
  
  # we add a Convolution1D, which will learn filters
  # word group filters of size filter_length:
  model.add(Conv1D(filters,
                   kernel_size,
                   padding='valid',
                   activation='relu',
                   strides=1))
  # we use max pooling:
  model.add(GlobalMaxPooling1D())
  
  # We add a vanilla hidden layer:
  model.add(Dense(hidden_dims))
  model.add(Dropout(0.2))
  model.add(Activation('relu'))
  
  # We project onto a single unit output layer, and squash it with a sigmoid:
  model.add(Dense(1))
  model.add(Activation('sigmoid')) #&lt;======== I need output after this. 
  
  
  
  model.compile(loss='binary_crossentropy',
                optimizer='adam',
                metrics=['accuracy'])
  model.fit(x_train, y_train,
            batch_size=batch_size,
            epochs=epochs,
            validation_data=(x_test, y_test))
  </code></pre>