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的版本;

参考地址:tensorflow-keras 

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值