tensorflow 神经网络与全连接层(数据集加载,全连接层,输出方式激活函数,计算误差)

目录

1.  小型常用数据集 数据加载 keras

1.1加载 MINST案例

1.2 CIFAR10/100

1.3 tf.data.Dataset.from_tensor_slices()

完成数据集迭代   

 shuffle   完成打散

 .map 批量预处理

 .batch  一次读取多张照片

.repeat(2)指定迭代次数

1.4 代码案例

 2.实战 测试

3.全连接层

4.输出方式

sigmoid 把输出压缩成[0,1]

softmax可以用于分类结果 总概率和是1

tanh [-1,1]

5.损失函数

5.1 MSE 均方差

5.1.1损失函数loss,2范数L2-norm

 5.1.2 求MSE三种方法

 5.2 交叉熵

 实例:

 计算交叉熵

 分类问题数值不稳定解决方案


1.  小型常用数据集 数据加载 keras

1.1加载 MINST案例

(x,y), (x_test,y_test)=keras.datasets.mnist.load_data()
# 下载 管理 解析 读取 转换 数据 最终拿到 numpy 格式
#假设 60k 张图片作为训练集 x.shape(60000,28,28) y.shape(60000,)
#此时y存的不是one-hot编码  而是0-9标签
# x.min(), x.max(), x.mean()  (0,255,33.3184)

# x_test.shape ,y_test.shape   (10000,28,28)  (10000,)
y_onehot=tf.onehot(y,depth=10)  #使用one-hot编码,一共10类

1.2 CIFAR10/100

10代表10类,100就是进一步细分 相当于100类

1.3 tf.data.Dataset.from_tensor_slices()

完成数据集迭代   

 shuffle   完成打散

 .map 批量预处理

 .batch  一次读取多张照片

 stopiteration

.repeat(2)指定迭代次数

.repeat()   不会停止迭代  不会触发异常

1.4 代码案例

 2.实战 测试

import tensorflow as tf
from tensorflow import keras
from keras import datasets
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

(x, y), (x_test, y_test) = datasets.mnist.load_data()
# x:[
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先需要导入相关的库和数据集: ```python import tensorflow as tf import numpy as np # 数据集 data = # 数据集的代码 ``` 接下来,你需要对数据进行预处理,包括划分训练集和测试集,以及归一化处理: ```python # 划分训练集和测试集 train_size = int(len(data) * 0.8) train_data = data[:train_size] test_data = data[train_size:] # 归一化处理 mean = train_data.mean(axis=0) std = train_data.std(axis=0) train_data = (train_data - mean) / std test_data = (test_data - mean) / std ``` 然后,你需要编写一个生成器函数,用于生成训练数据和测试数据: ```python def generate_data(data, lookback, delay, min_index, max_index, shuffle=False, batch_size=128, step=6): if max_index is None: max_index = len(data) - delay - 1 i = min_index + lookback while True: if shuffle: rows = np.random.randint(min_index + lookback, max_index, size=batch_size) else: if i + batch_size >= max_index: i = min_index + lookback rows = np.arange(i, min(i + batch_size, max_index)) i += len(rows) samples = np.zeros((len(rows), lookback // step, data.shape[-1])) targets = np.zeros((len(rows),)) for j, row in enumerate(rows): indices = range(rows[j] - lookback, rows[j], step) samples[j] = data[indices] targets[j] = data[rows[j] + delay][0] yield samples, targets ``` 接下来,你可以定义模型: ```python lookback = 24 step = 1 delay = 0 batch_size = 128 train_gen = generate_data(train_data, lookback=lookback, delay=delay, min_index=0, max_index=train_size, shuffle=True, step=step, batch_size=batch_size) test_gen = generate_data(test_data, lookback=lookback, delay=delay, min_index=train_size, max_index=None, step=step, batch_size=batch_size) val_steps = (len(test_data) - lookback) // batch_size test_steps = (len(test_data) - lookback) // batch_size model = tf.keras.models.Sequential([ tf.keras.layers.LSTM(200, input_shape=(None, train_data.shape[-1])), tf.keras.layers.Dense(1) ]) model.compile(optimizer=tf.keras.optimizers.Adam(), loss='mae') ``` 最后,你可以训练模型并进行预测: ```python history = model.fit(train_gen, steps_per_epoch=500, epochs=20, validation_data=test_gen, validation_steps=val_steps) # 进行预测 preds = model.predict(test_data) ``` 在训练完模型后,你可以使用均方根误差 (RMSE) 或平均绝对误差 (MAE) 来评估模型的预测准确性: ```python # 计算 RMSE 或 MAE from sklearn.metrics import mean_squared_error, mean_absolute_error rmse = np.sqrt(mean_squared_error(test_data[:, 0], preds[:, 0])) mae = mean_absolute_error(test_data[:, 0], preds[:, 0]) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值