EduCoder平台:人工智能-深度学习工具及实践
第1关:TensorFlow简介
第2关:TensorFlow基本编程模型
编程要求:
根据提示,实现矩阵相乘方法。其中:
- data:待喂入的数据
- w:常量:tf.constant([[5.,3.],[4.,2. ]])
测试说明:
程序会调用你实现的方法对数据进行计算,如:
输入: [[1,1],[2,2]]
输出:[[ 9. 5.] [18. 10.]]
输入: [[1,1]]
输出: [[9. 5.]]
代码如下:
# -*- coding: utf-8 -*-
import tensorflow as tf
def calc_xw(data):
'''
data:待喂入的数据
'''
#*********Bengin*********#
#创建占位符
x = tf.placeholder(tf.float32,[None,2])
#定义常量
w = tf.constant([[5.,3.],[4.,2.]])
#构造模型,其中xw为矩阵相乘
y = tf.matmul(x,w)
#平台显存优化代码
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
#创建会话
sess = tf.Session(config=config)
#运行sess进行计算
result=sess.run(y,feed_dict={x:data})
#关闭会话
#sess.close()
#*********End********#
return result
第3关:Tensorflow机器学习编程框架
编程要求:
根据提示,在右侧编辑器补充代码,实现多次项回归,对多次项曲线进行拟合。
测试说明:
本次需要拟合曲线图像如下:
生成代码如下:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1,1,100).reshape(-1,1)
y = 5*x**2+3*x+1
plt.plot(x,y,c='r')
plt.show()
其中:
x:特征(shape=[100,1]) y:标签(shape=[100,1])
我们会将x,y划分为训练集与测试集,并提供训练集特征与标签用来训练模型,再将测试集特征输入模型进行预测。若测试集上预测值与真实值的mse损失函数值低于阈值则视为通关。
多次项回归模型构建如下:
X = tf.placeholder(tf.float32,[None,1])
a = tf.Variable(tf.ones([1]), dtype=tf.float32)
b = tf.Variable(tf.ones([1]), dtype=tf.float32)
c = tf.Variable(tf.ones([1]), dtype=tf.float32)
predict=tf.add(tf.add(tf.multiply(a,tf.square(X)),tf.multiply(b,X)),c)
开始你的任务吧,祝你成功!
代码如下:
# -*- coding: utf-8 -*-
import tensorflow as tf
def tf_predict(train_data,train_label,test_data,lr,n_iters):
'''
train_data(ndarray):训练数据
train_label(ndarray):训练标签
test_data(ndarray):测试数据
lr(float):学习率
n_iters(int):训练轮数
test_predict(ndarray):测试集预测标签
'''
#*********Bengin*********#
#构造计算图
#step1使用placeholder定义输入数据
X = tf.placeholder(tf.float32,[None,1])
Y = tf.placeholder(tf.float32,[None,1])
#step2使用Variable定义模型参数
a = tf.Variable(tf.ones([1]),dtype=tf.float32)
b = tf.Variable(tf.ones([1]),dtype=tf.float32)
c = tf.Variable(tf.ones([1]),dtype=tf.float32)
#step3多次项回归模型与损失函数
predict = tf.add(tf.add(tf.multiply(a,tf.square(X)),tf.multiply(b,X)),c)
loss = tf.reduce_mean(tf.square(Y-predict))
#step4构造优化器
train = tf.train.AdamOptimizer(lr).minimize(loss)
#平台优化内存代码
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
#创建会话
sess = tf.Session(config=config)
#运行会话,对模型进行训练
#step1执行参数初始化
sess.run(tf.global_variables_initializer())
#step2定义迭代脚本并执行
for i in range(n_iters):
sess.run(train,feed_dict={X:train_data,Y:train_label})
#输入预测数据特征,得到预测标签
test_predict = sess.run(predict,feed_dict={X:test_data})
#关闭会话
#*********End*********#
return test_predict