Gene networks describe functional pathways in a given cell or tissue, representing processes such as metabolism, gene expression regulation, and protein or RNA transport. Thus, learning gene network is a crucial problem in the post genome era. Most existing works learn gene networks by assuming one gene provokes the expression of another gene directly leading to an over-simplified model. In this paper, we show that the gene regulation is a complex problem with many hidden variables. We propose a semi-fixed model to represent the gene network as a Bayesian network with hidden variables. In addition, an effective algorithm based on semi-fixed structure learning is proposed to learn the model. Experimental results and comparison with the-state-of-the-art learning algorithms on artificial and real-life datasets confirm the effectiveness of our approach. q 2005 Elsevier Ltd. All rights reserved.