深度学习自编码器改了DESC的一个问题
class Desc(object): #DescModel
def __init__(self,
dims,
x, # input matrix, row sample, col predictors
ith,
#input_shape,
alpha=1.0,
tol=0.005,
init='glorot_uniform', # initialization method
louvain_resolution=1.0, # resolution for louvain
n_neighbors=10, # the
pretrain_epochs=300, # epoch for autoencoder
epochs_fit=4, # epochs for each update,int or float
batch_size=256, # batch_size for autoencoder
random_seed=201809,
activation='relu',
actincenter="tanh", # activation for the last layer in encoder, and first layer in the decoder
drop_rate_SAE=0.2,
is_stacked=True,
use_earlyStop=True,
use_ae_weights=False,
save_encoder_weights=False,
save_encoder_step=5,
save_dir="result_tmp",
kernel_clustering="t",
# save result to save_dir, the default is "result_tmp". if recurvie path, the root dir must be exists, or there will be something wrong: for example : "/result_singlecell/dataset1" will return wrong if "result_singlecell" not exist
):
super(Desc, self).__init__() #Model
#if not os.path.exists(save_dir):
# print("Create the directory:" + str(save_dir) + " to save result")
# os.mkdir(save_dir)
self.dims = dims
self.x = x # feature n*p, n:number of cells, p: number of genes
self.alpha = alpha
self.tol = tol
self.init = init
self.input_dim = dims[0] # for clustering layer
self.n_stacks = len(self.dims) - 1
self.ith = self.n_stacks - 1 #自己加的
……
self.autoencoder = SAE.make_stack(self,ith)
hidden = self.autoencoder.get_layer(name='encoder_%d' % (self.n_stacks - 1)).output
#l2_loss=Lambda(lambda :K.sum(K.square(K.expand_dims(inputs, axis=1) - self.clusters), axis=2),name='l2_loss')
self.encoder = Model(inputs=self.autoencoder.input, outputs=hidden)
#clustering_layer = ClusteringLayer(self.kernel_clustering , name='clustering')(hidden)#
clustering_layer = ClusteringLayer(self.kernel_clustering, name='clustering')(hidden)# self.encoder.output DESC模型没有output self.kernel_clustering
self.model = Model(inputs=self.autoencoder.input, outputs=[clustering_layer, self.autoencoder.input])#clustering_layer
结果报错:
TypeError: init() missing 1 required positional argument: 'ith'