###to keep the after-convoluted images have same size with original input, you should use 'same'
To build a really working demo, you should find some mature code from github....
# ======================================================================
# Generate dummy data:
import h5py
import numpy as np
Nsamples = 100
Nclasses = 2
dim = 39
data = np.random.random((Nsamples, 1, dim, dim, dim))
target = np.random.random((Nsamples, dim, dim, dim))
target[target>=0.5] = 1
target[target<0.5] = 0
target = target.astype(int) # array containing randomly distributed 0 and 1 (represent the two classes)
# ======================================================================
# Define my model:
from keras.models import Sequential
model = Sequential()
from keras.layers.convolutional import Convolution3D, MaxPooling3D
model.add(Convolution3D(input_shape=(1,None,None,None),
nb_filter=32,
kernel_dim1=6, kernel_dim2=6, kernel_dim3=6,
init='uniform',
activation='relu',
bias=True,
border_mode='valid')) ###to keep the after-convoluted images have same size with original input, you should use 'same'
model.add(MaxPooling3D( pool_size=(2,2,2),
strides=None,
border_mode='valid'))
model.add(Convolution3D(nb_filter=32,
kernel_dim1=4, kernel_dim2=4, kernel_dim3=4,
init='uniform',
activation='relu',
bias=True,
border_mode='valid'))
model.add(MaxPooling3D( pool_size=(2,2,2),
strides=None,
border_mode='valid'))
model.add(Convolution3D(nb_filter=32,
kernel_dim1=3, kernel_dim2=3, kernel_dim3=3,
init='uniform',
activation='relu',
bias=True,
border_mode='valid'))
model.add(Convolution3D(nb_filter=32,
kernel_dim1=3, kernel_dim2=3, kernel_dim3=3,
init='uniform',
activation='relu',
bias=True,
border_mode='valid'))
model.add(Convolution3D(nb_filter=Nclasses,
kernel_dim1=1, kernel_dim2=1, kernel_dim3=1,
init='uniform',
activation='linear', ###linear should be 'sigmoid'
bias=True,
border_mode='valid'))
# ======================================================================
# Configure the training process:
model.compile(optimizer='sgd', loss='mse', metrics=['accuracy'])
###'MSE' -- > 'binary_crossentropy'
# ======================================================================
# Run training process:
model.fit(data, target, nb_epoch=150, batch_size=1)