寻找最小误差(loss) tensorflow

本文涉及的产品
简介: 寻找最小误差(loss) tensorflow
import os
import cv2
import numpy as np
import tensorflow as tf
h_pool2_flat = 12288
n_classes = 1
# 设置路径
data_home = 'data/imgdata/'
# 标签映射字典
image_to_label = {}
with open('data/label.txt', 'r') as fr:
    lines = fr.readlines()
    for line in lines:
        line = line.strip()
        key, value = line.split(' ')
        image_to_label[key] = value
# 构造训练集
X_train = []
y_train = []
for jpg in os.listdir(data_home):
    image = cv2.imread(data_home + jpg)
    x = cv2.resize(image, (64, 64))
    X_train.append(x)
    y = image_to_label[jpg]
    y_train.append(y)
X_train = np.array(X_train).reshape((1000, -1))
y_train = np.array(y_train).reshape((-1, 1))
# print(X_train.shape)
# print(y_train)
def get_biases(shape):
    '''
    函数的偏置定义。tf.get_variable(name,shape,dtype,initializer)
    参数
        1.name:“biases”
        2.shape:[size],即[输出维度]
        3.dtype:tf.float32
        4.initializer:初始化方式initial,我们选择常量初始化
            语法:tf.constant_initializer(value)
            参数:
            1)value:常数。0.1
    :param shape: 偏置输出维度
    :return: 偏置变量
    '''
    # TODO:1.使用tf.constant_initializer(0.1)函数定义初始化方式
    initial = tf.constant_initializer(0.1)
    # TODO:2.使用tf.get_variable函数定义偏置变量
    biases = tf.get_variable("biases",
                             shape=shape,
                             dtype=tf.float32,
                             initializer=initial)
    return biases
def get_weights(shape):
    '''
    定义参数,卷积核/权值
    语法:tf.get_variable(name,shape,dtype,initializer)
    参数:
        1.name:“weights”
        2.shape:根据不同的变量,输入不同的shape
        3.dtype:tf.float32
        4.initializer:初始化方式initial,我们选择初始化方式为截断的正太分布
            语法:tf.truncated_normal_initializer(stddev,dtype)
            参数:
                1)stedev:要生成的随机值的标准偏差。可设置stedev=0.005
                2) dtype:数据类型。只支持浮点类型 可设置dtype=tf.float32。
    :param shape:参数shape
    :return: 变量参数
    '''
    # TODO:1.使用tf.truncated_normal_initializer定义变量的初始化方式
    initial = tf.truncated_normal_initializer(stddev=0.005, dtype=tf.float32)
    # TODO:2.使用tf.get_variable函数定义变量,
    weights = tf.get_variable("weights",
                              shape=shape,
                              dtype=tf.float32,
                              initializer=initial)
    return weights
# 一层全连接
def add_fc_layer(inputs, insize, outsize, activation_function=None):
    '''
    添加全连接层
    1.定义权值weights
    2.定义偏置bias
    3.完成全连接操作:inputs*weights+bias
    4.如果没有激活函数,返回softmax结果
      如果有激活函数则,返回activation_function结果
    :param inputs: 输入图像
    :param insize: 输入维度
    :param outsize: 输出维度
    :param activation_function: 激活函数
    :return: 计算结果
    '''
    # TODO:1.调用get_weights()获取权值
    weights = get_weights([insize, outsize])
    # TODO:2.调用get_biases()获取偏置
    bias = get_biases([outsize])
    # TODO:3.使用tf.matmul完成inputs和weights乘法运算;使用+完成与bias的加法运算
    wx_plus_b = tf.matmul(inputs, weights) + bias
    # TODO:4.如果激活函数None,返回tf.nn.softmax结果,否则返回activation_function结果
    if activation_function == None:
        outputs = tf.nn.softmax(wx_plus_b)
    else:
        outputs = activation_function(wx_plus_b)
    return outputs
# 全部模型
def inference(inputs):
    # TODO:1.调用add_fc_layer完成全连接操作1
    with tf.variable_scope("fc1", reuse=tf.AUTO_REUSE) as scope:
        # h_pool2_flat = tf.reshape(inputs, shape=[-1, 12288])
        fc1 = add_fc_layer(inputs, h_pool2_flat, 128, tf.nn.relu)
    # TODO:2.调用add_fc_layer完成全连接操作2
    with tf.variable_scope("fc2", reuse=tf.AUTO_REUSE) as scope:
        fc2 = add_fc_layer(fc1, 128, 64, tf.nn.tanh)
    # TODO:3.调用add_fc_layer完成全连接操作3
    with tf.variable_scope("fc3", reuse=tf.AUTO_REUSE) as scope:
        fc3 = add_fc_layer(fc2, 64, 32, tf.nn.sigmoid)
        # TODO:4.调用Dropout激活概率为0.5
        fc3_drop = tf.nn.dropout(fc3, 0.5)
    # TODO:5.调用add_fc_layer完成全连接操作4
    with tf.variable_scope("fc4", reuse=tf.AUTO_REUSE) as scope:
        fc4 = add_fc_layer(fc3_drop, 32, n_classes, tf.nn.relu)
    return fc4
# 占位符
x_pl = tf.placeholder(tf.float32)
y_pl = tf.placeholder(tf.float32)
# 预测值
y_pred = inference(x_pl)
# 损失值、优化方法
k = (y_train - y_pred)
loss = tf.reduce_mean(tf.square(k))
optimizer = tf.train.AdamOptimizer(learning_rate=0.01)
train_op = optimizer.minimize(loss)
# 模型训练
saver = tf.train.Saver()
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for epoch in range(150000):
        _, train_loss = sess.run([train_op, loss], feed_dict={x_pl: X_train, y_pl: y_train})
        if epoch % 1000 == 0:
            print('epoch:{}, train_losses:{}'.format(epoch, train_loss))
    saver.save(sess, "model/model.ckpt", global_step=epoch)
    print('epoch:{}, save model'.format(epoch))

由于博客页面不能上传数据,so.............,数据下载地址:

(73条消息) alldata.rar-Python文档类资源-CSDN文库

https://download.csdn.net/download/qq_46906413/34467578


需要自取


如有侵权,请联系我删除  

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
计算机视觉
如何理解focal loss/GIOU(yolo改进损失函数)
如何理解focal loss/GIOU(yolo改进损失函数)
152 1
|
1月前
|
机器学习/深度学习
大模型训练loss突刺原因和解决办法
【1月更文挑战第19天】大模型训练loss突刺原因和解决办法
528 1
大模型训练loss突刺原因和解决办法
|
1月前
|
机器学习/深度学习 文字识别 PyTorch
PyTorch内置损失函数汇总 !!
PyTorch内置损失函数汇总 !!
54 0
|
1月前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow的自动微分与梯度下降
【4月更文挑战第17天】本文探讨了TensorFlow中的自动微分和梯度下降在机器学习模型优化中的作用。自动微分通过计算图实现,简化了深度学习模型中梯度的计算。TensorFlow利用`tf.GradientTape`进行反向传播以求梯度。梯度下降算法用于更新参数,`tf.train.GradientDescentOptimizer`是实现这一过程的一种方式。此外,TensorFlow还提供了其他优化器以提升性能。理解这些概念有助于更有效地构建和优化机器学习模型。
|
10月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记(6):模型的权值初始化与损失函数
Pytorch学习笔记(6):模型的权值初始化与损失函数
171 0
Pytorch学习笔记(6):模型的权值初始化与损失函数
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch实现基本的logistic和softmax回归实验(手动+torch)
pytorch实现基本的logistic和softmax回归实验(手动+torch)
176 0
|
机器学习/深度学习 Python
深度学习基础(一):sigmoid/softmax/cross Entropy
深度学习基础(一):sigmoid/softmax/cross Entropy
138 0
|
机器学习/深度学习 数据可视化 TensorFlow
使用TensorFlow Probability实现最大似然估计
TensorFlow Probability是一个构建在TensorFlow之上的Python库。它将我们的概率模型与现代硬件(例如GPU)上的深度学习结合起来。
128 1
|
PyTorch 算法框架/工具
【pytorch】交叉熵损失函数 F.cross_entropy()
【pytorch】交叉熵损失函数 F.cross_entropy()
342 0
|
TensorFlow 算法框架/工具
TensorFlow2.0(8):误差计算——损失函数总结
TensorFlow2.0(8):误差计算——损失函数总结
TensorFlow2.0(8):误差计算——损失函数总结

相关实验场景

更多