tensorflow 实现神经网络带正则化
来源:互联网 发布:python多线程 编辑:程序博客网 时间:2024/05/22 17:06
import matplotlib.pyplot as pltimport numpy as npimport tensorflow as tffrom sklearn import datasetsfrom tensorflow.python.framework import ops#data processingiris_data = datasets.load_iris()x_vals = iris_data.data #shape(examples,features)y_vals = iris_data.target #shape(examples,)x = np.transpose(x_vals) #shape(features,examples)y = tf.one_hot(y_vals,depth=3,axis=0) #one hot codingwith tf.Session() as sess: y = sess.run(y)train_indices = np.random.choice(len(x_vals),round(len(x_vals)*0.8),replace=False)test_indices = np.array(list(set(range(len(x_vals))) - set(train_indices)))x_train = x[:,train_indices]x_test = x[:,test_indices]y_train = y[:,train_indices]y_test = y[:,test_indices]def initializer_parameters(): w1=tf.get_variable("w1",[8,4],initializer=tf.contrib.layers.xavier_initializer(dtype=tf.float32)) b1=tf.get_variable("b1",[8,1],initializer=tf.zeros_initializer(dtype=tf.float32)) w2=tf.get_variable("w2",[3,8],initializer=tf.contrib.layers.xavier_initializer(dtype=tf.float32)) b2=tf.get_variable("b2",[3,1],initializer=tf.zeros_initializer(dtype=tf.float32)) parameters={"w1":w1, "b1":b1, "w2":w2, "b2":b2} return parameters def layers(w,b,x,actfunction=None): z = tf.add(tf.matmul(w,x),b) # z = tf.nn.dropout(z,dropout) #dropout regularization if actfunction is None: a = z else: a = actfunction(z) return a def model(x_train,y_train,x_test,y_test,learning_rate=0.005): ops.reset_default_graph() X_place=tf.placeholder(tf.float32,[4,None]) Y_place=tf.placeholder(tf.float32,[3,None]) #dropout=tf.placeholder(tf.float32) #dropout regularlzation parameters=initializer_parameters() w1=parameters["w1"] b1=parameters["b1"] w2=parameters["w2"] b2=parameters["b2"] a1 = layers(w1,b1,X_place,actfunction=tf.nn.relu) z2 = layers(w2,b2,a1) #L2_loss=0.01*(tf.nn.l2_loss(w1)+tf.nn.l2_loss(b1)+tf.nn.l2_loss(w2)+tf.nn.l2_loss(b2)) #L2 regularization cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=tf.transpose(z2),labels=tf.transpose(Y_place))) #+ L2_loss optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.005).minimize(cost) init=tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) train_loss=[] test_loss=[] for epoch in range(1000): _,each_cost=sess.run([optimizer,cost],feed_dict={X_place:x_train,Y_place:y_train}) # _,each_cost=sess.run([optimizer,cost],feed_dict={X_place:X_train,Y_place:Y_train,dropout:0.8}) # if use drouout train_loss.append(each_cost) test_cost=sess.run(cost,feed_dict={X_place:x_test,Y_place:y_test}) # test_cost=sess.run(cost,feed_dict={X_place:x_test,Y_place:y_test,dropout:1}) # if use dropout test_loss.append(test_cost) if (epoch+1)%50==0: print('epoch'+str(epoch+1)+':cost'+str(each_cost)) parameters_new = sess.run(parameters) w1_new=parameters_new["w1"] b1_new=parameters_new["b1"] w2_new=parameters_new["w2"] b2_new=parameters_new["b2"] a1 = layers(w1,b1,tf.to_float(x_test),actfunction=tf.nn.relu) a2 = layers(w2,b2,a1,actfunction=tf.nn.softmax) predict_test=sess.run(a2) a1 = layers(w1,b1,tf.to_float(x_train),actfunction=tf.nn.relu) a2 = layers(w2,b2,a1,actfunction=tf.nn.softmax) predict_train=sess.run(a2) a=0 for i in range(120): if np.argmax(predict_train[:,i])==np.argmax(y_train[:,i]): a=a+1 print('trainaccury:'+str(a/120)) b=0 for i in range(30): if np.argmax(predict_test[:,i])==np.argmax(y_test[:,i]): b=b+1 print('testaccury:'+str(b/30)) return train_loss,test_loss train_loss,test_loss = model(x_train,y_train,x_test,y_test)%matplotlib inline# Plot loss (MSE) over timeplt.plot(train_loss, 'k-', label='Train Loss')plt.plot(test_loss, 'r--', label='test Loss')plt.title('Loss per Generation')plt.legend(loc='upper right')plt.xlabel('Generation')plt.ylabel('Loss')plt.show()
阅读全文
0 0
- tensorflow 实现神经网络带正则化
- TensorFlow实现卷积神经网络
- Tensorflow实现卷积神经网络
- Tensorflow实现神经网络
- Tensorflow入门-实现神经网络
- Tensorflow实现卷积神经网络
- Tensorflow实现卷积神经网络
- TensorFlow实现卷积神经网络
- tensorflow实现循环神经网络
- Tensorflow入门-实现神经网络
- Tensorflow实现卷积神经网络
- Tensorflow实现卷积神经网络
- TensorFlow实现卷积神经网络
- tensorflow 卷积神经网络实现
- Tensorflow实现卷积神经网络
- Tensorflow入门-实现神经网络
- 神经网络在TensorFlow实现
- 卷积神经网络之tensorflow实现
- 构造函数 课堂练习3:
- idea使用git
- ASP.NET 获取母版页 上控件的值
- Android Studio中快捷键实现try catch等功能包含代码块
- Linux下查看磁盘与目录的容量——df、du
- tensorflow 实现神经网络带正则化
- 把Java程序打包成jar文件包并执行
- Redis命令
- caffe-fcn-net.py
- C#Sort排序
- A标签中通过href和onclick传递的this对象实现思路
- makefile强制目标
- 山东教师教育网-404、登录、密码找回、常见问题、绑定已有账户
- java Sting 如何替换指定位置的字符