BC.Wang Welcome

用分子坐标预测能量,使用可扩展的神经网络

2018-09-13
BCWang

阅读:


  • 项目在https://github.com/B-C-WANG/DeepLearningMoleculeEnergyPredict,里面有主要的介绍
  • 比较重要的设计思想:形成数据处理的流水线,但其中每一个阶段用pkl文件暂存,使其可以拆开来进行其他处理

重要的代码设计:

  • 首先设计了一个类存储某一种原子的NN,然后把input和output作为成员
  • 之后会建立多个原子的NN,然后以原子名称作为key,上面的input的graph作为value,然后所有的output的graph放到数组中,之后进行tf.concat
  • 最后进行feed的时候,使用graph作为key进行feed
  • 总的代码
    def build_models(self):
      
        self.models = []
        self.input = {}
        for atom in self.atom_cases:
                model = AtomModel(self.feature_num,atom=atom)
                self.models.append(model)
                self.input[atom] = model.input
		# 上面的input是另一个Dense NN 的input

        outputs = [model.output for model in self.models]
      
        concat = tf.concat(outputs, axis=1)
     	# 把多个Dense NN 的output收集起来concat
        self.output = tf.reduce_sum(concat, axis=1)
       

        self.sess.run(tf.global_variables_initializer())
	
	 def predict(self,x):
        atom_feature_dict = x
        feed_dict = {}
        self.check_atom_feature_dict(atom_feature_dict)
        for i in self.input:
			# 这里用按照原子分类后的graph作为key,放入数据,因为tf支持占位符作为key喂入数据,很方便
            feed_dict[self.input[i]] = atom_feature_dict[i]

        return self.sess.run(self.output,feed_dict=feed_dict)

Similar Posts

Comments

0