本文实例为大家分享了tensorflow实现弹性网络回归算法,供大家参考,具体内容如下
python代码:
#用tensorflow实现弹性网络算法(多变量) #使用鸢尾花数据集,后三个特征作为特征,用来预测第一个特征。 # 1导入必要的编程库,创建计算图,加载数据集 进口matplotlib。pyplot作为plt 进口tensorflow特遣部队 进口numpy np 从sklearn导入数据集 从tensorflow.python.framework进口操作 ops.get_default_graph () 税=tf.Session () 虹膜=datasets.load_iris () x_vals=np。阵列([[x [1], [2], x [3]] x iris.data)) y_vals=np。数组([y y iris.data] [0]) # 2声明学习率,批量大小,占位符和模型变量,模型输出 learning_rate=0.001 batch_size=50 x_data=特遣部队。占位符(形状=(没有3)dtype=tf.float32) #占位符大小为3 y_target=特遣部队。占位符(=[没有,1],形状dtype=tf.float32) 一个=tf.Variable (tf.random_normal(形状=(3,1))) b=tf.Variable (tf.random_normal(形状=[1])) model_output=tf.add (tf。matmul (x_data), b) # 3对于弹性网络回归算法,损失函数包括L1正则和L2正则 elastic_param1=tf.constant (1)。 elastic_param2=tf.constant (1)。 l1_a_loss=tf.reduce_mean (abs ()) l2_a_loss=tf.reduce_mean (tf.square (A)) e1_term=特遣部队。乘(elastic_param1 l1_a_loss) e2_term=特遣部队。乘(elastic_param2 l2_a_loss) 损失=tf.expand_dims (tf.add (tf.add (tf.reduce_mean (tf。平方(y_target - model_output)), e1_term), e2_term), 0) # 4初始化变量,声明优化器,然后遍历迭代运行,训练拟合得到参数 init=tf.global_variables_initializer () sess.run (init) my_opt=tf.train.GradientDescentOptimizer (learning_rate) train_step=my_opt.minimize(亏损) loss_vec=[] 因为我在范围(1000): rand_index=np.random.choice (len (x_vals),大?batch_size) rand_x=x_vals [rand_index] rand_y=np.transpose ([y_vals [rand_index]]) sess.run (train_step feed_dict={x_data: rand_x y_target: rand_y}) temp_loss=sess.run(损失,feed_dict={x_data: rand_x y_target: rand_y}) loss_vec.append (temp_loss) 如果(i + 1) % 250==0: 打印(“步”+ str (i + 1) +“=? str (sess.run (A)) + " b=' + str (sess.run (b))) print('='损失+ str (temp_loss)) #现在能观察到,随着训练迭代后损失函数已收敛。 plt。情节(loss_vec k——) plt。标题(“每一代损失”) plt.xlabel(代) plt.ylabel(“损失”) plt.show ()
本文参考书《Tensorflow机器学习实战指南》
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。