tensorflow19《TensorFlow实战Google深度学习框架》笔记-08-04 预测正弦函数 code
2017-04-10 20:53
369 查看
# 《TensorFlow实战Google深度学习框架》08 循环神经网络 # win10 Tensorflow1.0.1 python3.5.3 # CUDA v8.0 cudnn-8.0-windows10-x64-v5.1 # filename:ts08.05.py # 预测正弦函数 import numpy as np import tensorflow as tf from tensorflow.contrib.learn.python.learn.estimators.estimator import SKCompat from tensorflow.python.ops import array_ops as array_ops_ import matplotlib.pyplot as plt learn = tf.contrib.learn # 1. 设置神经网络的参数 HIDDEN_SIZE = 30 NUM_LAYERS = 2 TIMESTEPS = 10 TRAINING_STEPS = 3000 BATCH_SIZE = 32 TRAINING_EXAMPLES = 10000 TESTING_EXAMPLES = 1000 SAMPLE_GAP = 0.01 # 2. 定义生成正弦数据的函数 def generate_data(seq): X = [] y = [] for i in range(len(seq) - TIMESTEPS - 1): X.append([seq[i: i + TIMESTEPS]]) y.append([seq[i + TIMESTEPS]]) return np.array(X, dtype=np.float32), np.array(y, dtype=np.float32) # 3. 定义lstm模型 def lstm_model(X, y): lstm_cell = tf.contrib.rnn.BasicLSTMCell(HIDDEN_SIZE, state_is_tuple=True) cell = tf.contrib.rnn.MultiRNNCell([lstm_cell] * NUM_LAYERS) output, _ = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32) output = tf.reshape(output, [-1, HIDDEN_SIZE]) # 通过无激活函数的全联接层计算线性回归,并将数据压缩成一维数组的结构。 predictions = tf.contrib.layers.fully_connected(output, 1, None) # 将predictions和labels调整统一的shape labels = tf.reshape(y, [-1]) predictions = tf.reshape(predictions, [-1]) loss = tf.losses.mean_squared_error(predictions, labels) train_op = tf.contrib.layers.optimize_loss( loss, tf.contrib.framework.get_global_step(), optimizer="Adagrad", learning_rate=0.1) return predictions, loss, train_op # 4. 进行训练 # 封装之前定义的lstm。 regressor = SKCompat(learn.Estimator(model_fn=lstm_model,model_dir="Models/model_2")) # 生成数据。 test_start = TRAINING_EXAMPLES * SAMPLE_GAP test_end = (TRAINING_EXAMPLES + TESTING_EXAMPLES) * SAMPLE_GAP train_X, train_y = generate_data(np.sin(np.linspace( 0, test_start, TRAINING_EXAMPLES, dtype=np.float32))) test_X, test_y = generate_data(np.sin(np.linspace( test_start, test_end, TESTING_EXAMPLES, dtype=np.float32))) # 拟合数据。 regressor.fit(train_X, train_y, batch_size=BATCH_SIZE, steps=TRAINING_STEPS) # 计算预测值。 predicted = [[pred] for pred in regressor.predict(test_X)] # 计算MSE。 rmse = np.sqrt(((predicted - test_y) ** 2).mean(axis=0)) print ("Mean Square Error is: %f" % rmse[0]) ''' Mean Square Error is: 0.007281 ''' fig = plt.figure() plot_predicted = plt.plot(predicted, label = 'predicted') plot_test = plt.plot(test_y, label='real_sin') plt.legend([plot_predicted, plot_test], ['predicted', 'real_sin']) #fig.savefig('sin.png') plt.show();
相关文章推荐
- 马哥笔记09_01~~~08_04
- 学习笔记04·预测测试数据集、LeNet…
- android应用开发揭秘examples_04-08笔记(CheckBox的使用)
- tensorflow11 《TensorFlow实战Google深度学习框架》笔记-05-04mnist-nn最佳实践code
- tensorflow27《TensorFlow实战Google深度学习框架》笔记-10-04 异步更新模式样例程序 code
- tensorflow23《TensorFlow实战Google深度学习框架》笔记-09-04 TensorBoard 监控指标可视化 code
- caffe2 学习笔记04-训练网络并进行预测
- (原创)c#学习笔记08--面向对象编程简介02--OOP技术04--对象之间的关系
- tensorflow18《TensorFlow实战Google深度学习框架》笔记-08-03 SKlearn封装例子 code
- tensorflow40《TensorFlow实战》笔记-08-01 TensorFlow实现深度强化学习-策略网络 code
- tensorflow17《TensorFlow实战Google深度学习框架》笔记-08-02 使用循环神经网络实现语言模型 code
- tensorflow41《TensorFlow实战》笔记-08-02 TensorFlow实现深度强化学习-估值网络 code
- 马哥笔记08_01~~~08_04
- tensorflow16《TensorFlow实战Google深度学习框架》笔记-08-01 RNN前向传播 code
- tensorflow31《TensorFlow实战》笔记-04 TensorFlow实现自编码器及多层感知机 code
- 赢在中国(08-03-04)
- 老友记台词学习笔记 SE01EP04(一)
- AT24C01/02/04/08/16/32系列EEPROM驱动程序
- Java语言介绍(04)开源项目(08)DMBS数据库管理系统(01)HSQLDB
- H.264笔记之四--运动矢量预测