Removing dimension in model structure using reshape?

424 views
Skip to first unread message

Loser

unread,
Apr 10, 2017, 3:27:04 PM4/10/17
to Keras-users
Is it possible to remove a dimension using Reshape or any other function.. 

I am have this network 


import keras
from keras.layers.merge import Concatenate
from keras.models import Model
from keras.layers import Input, Dense
from keras.layers import Dropout
from keras.layers.core import Dense, Activation, Lambda, Reshape,Flatten
from keras.layers import Conv2D, MaxPooling2D, Reshape, ZeroPadding2D
import numpy as np


#Number_of_splits = ((input_width-win_dim)+1)/stride_dim
splits
= ((40-5)+1)/1
print splits


train_data_1
= np.random.randint(100,size=(100,splits,45,5,3))
test_data_1
= np.random.randint(100,size=(10,splits,45,5,3))
labels_train_data
=np.random.randint(145,size=(100,15))
labels_test_data
=np.random.randint(145,size=(10,15))


list_of_input
= [Input(shape = (45,5,3)) for i in range(splits)]
list_of_conv_output
= []
list_of_max_out
= []
for i in range(splits):
    list_of_conv_output
.append(Conv2D(filters = 145 , kernel_size = (15,3))(list_of_input[i])) #output dim: 36x(31,3,145)
    list_of_max_out
.append((MaxPooling2D(pool_size=(2,2))(list_of_conv_output[i]))) #output dim: 36x(15,1,145)


merge
= keras.layers.concatenate(list_of_max_out) #Output dim: (15,1,5220)
#reshape = Reshape((merge.shape[0],merge.shape[3]))(merge) # expected output dim: (15,145)


dense1
= Dense(units = 1000, activation = 'relu',    name = "dense_1")(merge)
dense2
= Dense(units = 1000, activation = 'relu',    name = "dense_2")(dense1)
dense3
= Dense(units = 145 , activation = 'softmax', name = "dense_3")(dense2)






model
= Model(inputs = list_of_input , outputs = dense3)
model
.compile(loss="sparse_categorical_crossentropy", optimizer="adam")


print model.summary()


raw_input
("SDasd")
hist_current
= model.fit(x = [train_input[i] for i in range(100)],
                    y
= labels_train_data,
                    shuffle
=False,
                    validation_data
=([test_input[i] for i in range(10)], labels_test_data),
                    validation_split
=0.1,
                    epochs
=150000,
                    batch_size
= 15,
                    verbose
=1)

How do i remove the middle dimension?
Reply all
Reply to author
Forward
0 new messages