TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数

人工智能42

前言:

本专栏在保证内容完整性的基础上,力求简洁,旨在让初学者能够更快地、高效地入门TensorFlow2 深度学习框架。如果觉得本专栏对您有帮助的话,可以给一个小小的三连,各位的支持将是我创作的最大动力!

系列文章汇总:TensorFlow2 入门指南
Github项目地址:https://github.com/Keyird/TensorFlow2-for-beginner
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数

从上一篇文章: TensorFlow2 入门指南 | 14 网络模型的装配、训练与评估

我们学会了如何使用 compile 进行模型的装配,其中就包括了损失函数。这篇文章就来简单谈谈如何来构建损失函数。损失函数包括两种:

  • 一种是默认的 内置损失函数,可以直接调用的,适合初学者;
  • 还有一种,就是 自定义损失函数,需要自行构建,这是进阶者必须掌握的。

Original: https://blog.csdn.net/wjinjie/article/details/122338205
Author: AI 菌
Title: TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数

相关阅读2

Title: Anaconda3中库的安装及在pycharm使用

文章目录

前言

Andaconda的安装前文已经提到。现在介绍Anaconda的使用。

一、查看版本

在电脑开始菜单。Anaconda文件夹下打开Anaconda Prompt。输入 conda --version
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
版本为4.6.11

; 二、创建虚拟环境及操作

1.创建环境

在Anaconda Prompt终端输入:

conda create --name 环境名 python=版本号

比如我创建一个环境名为tensorflow的虚拟环境,python版本为3.7

conda create --name tensorflow python=3.7

使用 conda info -e查看是否有你创建的虚拟环境
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
见上图,这里已经有了 tensorflow环境。(base为Anaconda安装时就存在的基础环境)
如果环境创建失败,请查看这篇博客,这里给出一种解决方法:虚拟环境失败请看这里

2.conda其他命令

conda remove -n tensorflow -all 删除名称为tensorflow的虚拟环境
conda list 列出本虚拟环境中所有安装的库,看命令行最前面括号里就知道目前所在哪个环境中。
conda activate tensorflow 激活tensorflow虚拟环境。不需要先退出上一个环境。
conda deactivate tensorflow 关闭虚拟环境
conda install pip 安装pip管理器

三、在指定环境中安装所需的库

1、首先激活环境 conda activate tensorflow(一定要先确认所在环境)
2、使用 pip安装管理器,在创建环境的时候会安装有 pip。如果没有就用conda安装
3、安装所需要的库。
例1:安装tensorflow2-cpu版本:安装2.2.

pip install tensorflow==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

例2:安装tensorlayer 2.2.1版本

pip install tensorlayer==2.2.1 -i https://pypi.tuna.tsinhua.edu.cn/simple

安装时请指定安装源。这里指定清华源。官方源下载太慢,还容易出错。等待下载即可。
此处列出国内常用源地址(一般记住一个就行):

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学
https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple/

安装指定的版本请用 库名==版本号指定;例: pip install numpy==1.16.1

卸载指定库: pip uninstall "库名" 例: pip uninstall numpy

四、Pycharm中使用安装了指定库的解释器

首先,打开自己的项目。在 File--settings--Project:"自己的项目名"打开之后可能是这样:没有东西
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
接下来,点红圈那里的齿轮,然后点 Add...
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
选择 conda Environment
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
之后先点 Existing environment,然后再点2处的...

TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
最后找到Anaconda安装的文件夹,跟据 1--2--3--4步找到 python.exe,点 OK就可以愉快的使用了
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数

; 五、结语

如:我在 Anaconda中使用conda创建了名为 tensorflow的虚拟环境,在虚拟环境中使用 pip安装了 tensorflow==2.2,安装了 numpy==1.16.1。那么经过解释器的导入。现在再Pycharm中打开python文件就可以导入 tensorflownumpy,就不会出现找不到库的问题了

Original: https://blog.csdn.net/m0_52304861/article/details/123561307
Author: 皮皮
Title: Anaconda3中库的安装及在pycharm使用

相关阅读3

Title: ROS+ubuntu20.04+opencv4.5.5

环境:
ubuntu20.04
opencv4.5.5
ros: noetic

参考链接:
在ROS中使用OpenCV进行简单的图像处理
ROS中使用opencv
第一个链接注释比较多,第二个链接是搞定的,成功的界面是这样的:
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
读取opencv的程序:


static const char WINDOW[] = "Image window";
static void help()
{
    printf("\nThis program demonstrates converting OpenCV Image to ROS Image messages  \n"
        );

}

int main(int argc, char** argv)
{
  help();
  ros::init(argc, argv, "image_converter");

  //Reading an image from the file
  cv::Mat cv_image = cv::imread("/home/qiao/1.png");
  if(cv_image.empty() )
    {
        ROS_ERROR("Read the picture failed!");
        return -1;
    }

  //Convert OpenCV image to ROS message
  ros::NodeHandle node;
  image_transport::ImageTransport transport(node);
  image_transport::Publisher image_pub;
  image_pub=transport.advertise("OutImage", 1);
  ros::Time time=ros::Time::now();

  cv_bridge::CvImage cvi;
  cvi.header.stamp = time;
  cvi.header.frame_id = "image";
  cvi.encoding = "bgr8";
  cvi.image = cv_image;

  sensor_msgs::Image im;
  cvi.toImageMsg(im);
  image_pub.publish(im);
  ROS_INFO("Converted Successfully!");

  //Show the image
  cv::namedWindow(WINDOW);
  cv::imshow(WINDOW,cv_image);
  cv::waitKey(0);

  ros::spin();
  return 0;
}

后面还需要编译:

mkdir -p 工作区/src
cd 工作区/src
catkin_init_workspace
catkin_create_pkg --rosdistro noetic 工作区 sensor_msgs cv_bridge roscpp std_msgs image_transport
find_package(OpenCV REQUIRED)

include_directories(include ${OpenCV_INCLUDE_DIRS})
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(node src/node.cpp)
target_link_libraries(node ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
add_dependencies(node 工作区_gencpp)

cd 工作区
catkin_make

2022年1月7更新:

find_package(OpenCV 4 REQUIRED)

我之前是加了OpenCV 4 的,但是我全部重新整了一遍发现不需要加4,因为我系统里很干净就一个我编译的opencv4.2,所以我就去掉了4

find_package(OpenCV REQUIRED)

然后就是运行:

roscore
source devel/setup.bash
rosrun 工作区 cpp文件的名字

至此能正确显示图像,流程也是没有问题的。

不过有几个问题我没理清楚:

  1. opencv是我编译好的4.5.5么,还是ROS自带的?
  2. 收端怎么收的?
    等我整明白了来还愿!

经验证上面的opencv用的是ROS自带的,我需要将opencv换成自己的4.5.5版本!
参考链接:
Compiling ROS cv_bridge with Python 3
解决Ubuntu环境下ROS Kinetic中的cv_bridge和自己安装OpenCV 2.4.xx兼容性笔记
这个大佬写的巨好!!
Compiling ROS cv_bridge with Python 3
OpenCV4 instead of opencv3 #272
也参考了这两个链接!

这里面要注意的是在Opencv4.5.5 中使用cv_bridge转换msgs 与 opencv图像需要将opencv版本换成自己的,我的是这样的:

set(OpenCV_VERSION 4.5.5)
set(OpenCV_VERSION_MAJOR 4)
set(OpenCV_VERSION_MINOR 5)
set(OpenCV_VERSION_PATCH 5)
set(OpenCV_SHARED ON)
set(OpenCV_CONFIG_PATH /usr/local/share/opencv4)
set(OpenCV_INSTALL_PATH /usr/local/)
set(OpenCV_LIB_COMPONENTS opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_viz;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_cvv;opencv_datasets;opencv_dpm;opencv_face;opencv_fuzzy;opencv_hdf;opencv_img_hash;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_tracking;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto)
set(OpenCV_USE_MANGLED_PATHS TRUE)
set(OpenCV_MODULES_SUFFIX )

最后成功的截图:
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
ROS这部分算是搞完了,虽然还有很多不理解,但是也算是圆满,接下来就是理解这玩意以及后续的应用!

查看opencv版本信息: pkg-config --cflags opencv

pkg-config --modversion opencv4

OPENCV_GENERATE_PKGCONFIG - pkg-config --modversion opencv4

2022年1月7更新:
我重新构建节点的时候报了个错误

Could neither find file "toplevel.cmake" in any workspace nor relative, checked the following paths

我尝试了网上很多解决办法都不行,会报新的问题,最终解决方案:

cd /opt/ros/noetic/share/
ls -l catkin

发现有catkin文件夹,我把这个文件夹移到了前面的目录

mv catkin ../

也就是share和catkin在同级目录下:
TensorFlow2 入门指南 | 15 默认损失函数 & 自定义损失函数
其他都按照之前的处理就好,最终显示也是正常的。

202年1月7更新,重新搞了一遍,存一些中间文件:

1. opencv冲突的解决方案:
https://blog.csdn.net/qq_38441692/article/details/107249191
2. cv_bridge
https://blog.csdn.net/weixin_43493992/article/details/116308137
3. 为什么OpenCV4 "pkg-config --modversion opencv"显示" No package 'opencv' found"?解决方法!
https://blog.csdn.net/qq_38505858/article/details/117780774
opencv4.pc  这是在pkgconfig中的,默认的会找这个文件
pkg-config --modversion opencv4
4. ubuntu18.04 编译OpenCV4.2.0 OpenCV_Contrib4.2.0
https://blog.csdn.net/PecoHe/article/details/90581526
https://blog.csdn.net/u011171361/article/details/106303216
5. sudo apt install python3-rosdep  not sudo apt install python3-rosdep2
DEFAULT_SOURCES_LIST_URL = 'file:///home/qiao/project/rosdistro/rosdep/sources.list.d/20-default.list'
REP3_TARGETS_URL = 'file:///home/qiao/project/rosdistro/releases/targets.yaml'
DEFAULT_INDEX_URL = 'file:///home/qiao/project/rosdistro/index-v4.yaml'
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
catkin_create_pkg --rosdistro noetic opencv_test sensor_msgs cv_bridge roscpp std_msgs image_transport

Original: https://blog.csdn.net/weixin_43868576/article/details/122688385
Author: 渡伴
Title: ROS+ubuntu20.04+opencv4.5.5