Keras线性回归(亲测)
环境准备:pychar,win10
下载三个包:
import keras import numpy as np import matplotlib.pyplot as plt import tensorflow as tf
直接开始:
提示错误:
ModuleNotFoundError: No module named keras.backend.tensorflow_backend; keras.backend is not a package
找到tensorflow对应的ceras的版本;
参考地址:
keras中调用tensorflow-gpu
import keras.backend.tensorflow_backend as KTF import os #进行配置,每个GPU使用90%上限现存 os.environ["CUDA_VISIBLE_DEVICES"]="0" # 使用编号为0,1号的GPU config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 每个GPU上限控制在90%以内 session = tf.Session(config=config) # 设置session KTF.set_session(session)
import keras import numpy as np import matplotlib.pyplot as plt # #调用GPU # """GPU设置为按需增长""" # import os # import tensorflow as tf # import keras.backend.tensorflow_backend as KTF # # 指定第一块GPU可用 # os.environ["CUDA_VISIBLE_DEVICES"] = "0" # config = tf.ConfigProto() # config.gpu_options.allow_growth=True #不全部占满显存, 按需分配 # # config.gpu_options.per_process_gpu_memory_fraction = 0.3 # sess = tf.Session(config=config) # KTF.set_session(sess) # # #调用GPU代码部分结束 #按顺序构成的模型,最简单的,一层层的. from keras.models import Sequential # 全连接层 from keras.layers import Dense #使用 numpys随机生成点 #再随机生成一些噪音. x_data=np.random.rand(100) noise=np.random.normal(0,0.01,x_data.shape) y_data=x_data*0.1+0.2+noise #一条线 #显示随机点 plt.scatter(x_data,y_data) plt.show() #构建一个顺序模型 model=Sequential() #在模型中添加一个全连接层 model.add(Dense(units=1,input_dim=1))#输出是一维的,输入也是一维的 #因为会输入一个x的值,输出一个y的值. #sgd 随机梯度下降法 #mse 均方误差 model.compile(optimizer=sgd,loss=mse) #训练模型 for step in range(5001): #每次都训练一个批次 cost=model.train_on_batch(x_data,y_data)#每次放入一个批次进行训练 #每500个cost打印一次cost值. if step%500==0: print("cost 的值 ",cost) #打印权值和偏置值 # #只有一层,所以是0 # 因为输入是1,输出是1,所以也只有一个权值. W,b=model.layers[0].get_weights() print("W****",W,"b*****",b) # 把x_data 放进网络中,预测 y_pred y_pred=model.predict(x_data) #打印出来,显示随机点 #上边已经打印了,这里就不写了 #显示预测结果 plt.scatter(x_data,y_data) #scatter是绘制散点图. #预测值为红色,宽度为3 plt.plot(x_data,y_pred,"r-",lw=3) plt.show()