使用tf.keras实现多层感知器(神经网络)的代码实现(tensorflow2.0基础入门2)

**

逻辑回归与交叉熵

**
1)线性回归预测的是一个连续的值
2)逻辑回归给出的”是”和“否”的回答
3)逻辑回归的激活函数 采用的是(sigmoid激活函数) sigmoid函数是一个概率分布函数,即给定某个输入,它将输出为一个0到1的概率值
4)对于分类问题,我们最好的使用交叉嫡损失函数会更有效,交叉嫡会输出一个更大的“损失”.
5)平方差损失也可以使用,但是要求:训练次数要非常多,训练速度要非常的慢。 平方差所惩罚的是与损失为同一数量级的情形.

交叉嫡损失函数:

1)交叉嫡刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉嫡的值越小,两个概率分布就越接近。假设概率分布p为期望输出,概率分布q为实际输出,H(p,q)为交叉嫡
2)交叉熵实际上就是放大了两种概率分布的损失.


import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data=pd.read_csv('./dataset/credit-a.csv',header=None) #header 针对的是没有表头的数据(自动添加表头)
print('原始数据:\n',data,'\r\n')

#print('原始数据的最后一列有多少的不同值和个数:\n',data.iloc[:,-1].value_counts(),'\r\n')
#value_counts() 是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。

x=data.iloc[:,0:-1]
y=data.iloc[:,-1].replace(-1,0) #将-1替换为0
print('输入X:\n',x,'\r\n')
print('输入y:\n',y,'\r\n')

#建立模型
model=tf.keras.Sequential()#顺序模型的初始化(Sequential)
model.add(tf.keras.layers.Dense(4,input_shape=(15,),activation='relu'))#输入层
model.add(tf.keras.layers.Dense(4,activation='relu'))#第二层就不需要指明input_shape
model.add(tf.keras.layers.Dense(1,activation='sigmoid'))#输出层

model.summary()

#编译
model.compile(optimizer='adam',
             loss='binary_crossentropy',
              metrics=['acc']
)
#metrics在运行过程中会计算 正确率的情况

history=model.fit(x,y,epochs=100)

#Draw 正确率的变化情况
plt.plot(history.epoch,history.history.get('acc'))
plt.show()
TensorFlow 2.0中,搭建神经网络的一个简单实例通常涉及以下几个步骤: 首先,你需要安装TensorFlow库,如果还没有的话,可以使用以下命令: ```bash pip install tensorflow ``` 然后,你可以开始创建一个基本的全连接层(Dense Layer)神经网络模型。这里是一个简单的多层感知机(Multilayer Perceptron, MLP)的示例: ```python import tensorflow as tf from tensorflow.keras import layers # 定义超参数 input_dim = 784 # 输入维度,例如对于MNIST数据集,每个像素为1 hidden_units = [512, 256] # 隐藏层神经元的数量 output_dim = 10 # 输出类别数,如MNIST有10个数字 # 创建模型 model = tf.keras.Sequential([ layers.Dense(hidden_units[0], activation='relu', input_shape=(input_dim,)), # 第一层隐藏层 layers.Dense(hidden_units[1], activation='relu'), # 后续隐藏层 layers.Dense(output_dim, activation='softmax') # 输出层,用于分类 ]) # 编译模型 model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # 示例输入数据 example_input = tf.random.uniform((1, input_dim)) # 打印模型概况 model.summary() ``` 在这个例子中,我们使用了ReLU激活函数和Adam优化器,并设置了交叉熵损失。`summary()`方法展示了模型的结构。 如果你想训练这个模型,还需要准备训练数据,比如加载MNIST数据集: ```python (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() # 归一化 x_train, x_test = x_train / 255.0, x_test / 255.0 # 将图像数据调整为适合神经网络的形状 x_train = x_train.reshape(-1, input_dim) x_test = x_test.reshape(-1, input_dim) # 训练模型 model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test)) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值