mac下利用pyenv管理多个版本的python

前言 经常遇到这样的情况: 系统自带的Python是2.x,自己需要Python 3.x; 某些机器学习的框架(如PaddlePaddle/Tensorflow)需要的版本是python3.5,但是你的系统支持的python版本较高,且无法删除(因为某些软件会和python产生依赖) 此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存。pyenv就是这样一个Python版本管理器。 ...

pyenv下使用python matplotlib模块的问题解决

错误信息 先来描述一下我遇到的问题,在进行matplotlib学习时,plot.show()总是无法成功运行,总是会报一个错: RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of ‘python’ with ‘pythonw’. See ‘Working with Matplotlib on OSX’ in the Matplotlib FAQ for more information. 其实意思很简单,就是我用的python并不是一个作为系统框架存在的,因为我为了方便管理python的版本,选择了pyenv这个管理工具,是一个独立出来的python环境。 ...

Python 管理哪家强?

之前介绍过《利用pyenv管理多个版本的python》,pyenv 是一个非常好用的 Python 版本管理工具,利用它我们可以在同一台电脑上安装多个版本的 Python ,这个过程非常简单。Mac系统的电脑一行命令就可以安装了: brew install pyenv pyenv 的安装和使用详见开篇提到的文章,这里不再赘述。 今天主要是想介绍另一个非常好用的 Python 工具——“Pipenv” Pipenv是什么? Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. Windows is a first-class citizen, in our world. It automatically creates and manages a virtualenv for your projects, as well as adds/removes packages from your Pipfile as you install/uninstall packages....

TensorFlow笔记0——在Ubuntu 18.04安装tensorflow 1.12 GPU版本

在之前的深度学习中,我是在MAC上跑CPU版本的tensorflow程序,当数据量变大后,tensorflow跑的非常慢,在内存不足情况下,又容易造成系统崩溃,这个时候我觉得不应该浪费我的限制的微星游戏本,便想着拿来跑深度学习的代码。 1. 配置信息 我的老电脑配置如下: CPU i5-4210M 16G内存 GPU GTX 950M 显存2G 128G SSD Ubuntu 18.04 这个配置一般,但是为了不让我的mac发光发热,同时体验下GPU给深度学习的加速效果(虽然可能加不了多少速度)以及不想让老电脑荒废的心,我最终决定还是在上面安装Ubuntu18.04跑TensorFlow了。 2. 选择安装所需软件...

TensorFlow笔记2——利用TensorFlow训练一个最简单的一元线性模型

前言 这是一次使用《TensorFlow笔记(1)——TensorFlow中的相关基本概念》中学习到的知识进行机器学习的实验,一来是为了理解机器学习大概是什么样的,另一方面也算是将之前学习到的一些知识活学活用。 本次实现的环境为: macOS Mojave 10.14.1 python 3.7.0(pyenv) Tensorflow 1.12.0 numpy 1.15.4 简单介绍下机器学习是什么 机器学习和人类学习的过程: ...

TensorFlow笔记3——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型

前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World"。就好比编程入门有Hello World,机器学习入门有MNIST。 MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片: 它也包含每一张图片对应的标签,告诉我们这个是数字几。比如,上面这四张图片的标签分别是5,0,4,1。 其实训练一个简单的手写数字识别模型的代码很短,我的示例代码总共也就50行,除去注释、空格之类的估计连30行也没有,但是去理解包含在代码中的设计思想是很重要的,因此这篇笔记我会将我对每段代码的理解都记录下来。 参考: MNIST机器学习入门 机器学习-损失函数 ...

TensorFlow笔记4——优化手写数字识别模型之代价函数和拟合

前言 上篇笔记我们利用MNIST数据集训练了一个手写数字识别的模型,但是准确率非常的低,维持在91%左右,我们可以尝试着将准确率提高到96%以上,在实验之前我们需要先了解一些基本的概念,本篇文章可能会有些枯燥,因为大多都是理论知识。 本文重点 激活函数 代价函数 拟合 什么是激活函数?激活函数是干嘛的? 想了解什么是激活函数,就要先了解神经网络的基本模型,下图所示为一单一人工神经网络的基本模型图: ...

TensorFlow笔记5-—优化手写数字识别模型之优化器

什么是优化器(Optimizer) 神经网络越复杂 , 数据量越大 , 我们需要在训练神经网络的过程上花费的时间也就越多. 原因很简单, 就是因为计算量太大了. 可是往往有时候为了解决复杂的问题, 复杂的结构和大数据又是不能避免的, 所以我们需要寻找一些方法, 让神经网络聪明起来, 快起来。那些可以加速神经网络训练的方法就叫做优化器(Optimizer) 推荐阅读:加速神经网络训练 (Speed Up Training) 常见的优化器 这个部分的理论知识实在太多了,我简单的整理了一点点,详见机器学习:各种优化器Optimizer的总结与比较 下面是TensorFlow中提供的相关优化器的API ...

TensorFlow笔记(1)——TensorFlow中的相关基本概念

前言 Tensorflow 是一个编程系统,使用图(graph)来表示计算任务,图(graph)中的节点称之为 op (operation),一个 op 获得 0 个或多个 Tensor,执行计算,产生 0 个或多个 Tensor。Tensor 看作是一个 n 维的数组或列表。图必须在会话(Session)里被启动。 基本概念 使用图(Graph)来表示计算任务 在被称为会话(Session)的上下文(context)中执行图 使用tensor表示数据 通过变量(Variable)维护状态 使用feed和fetch可以为任意的操作赋值或者从中获取数据 下图显示了Session、Graph、Tensor、Variable之间的关系 ...

plainify

【译】5 分钟内从单体架构迁移到微服务架构

“微服务架构是一种将单体应用程序开发为一套小型服务的方法。”——马丁 · 福勒。 首先,我们需要明白什么是单体架构。因此,我将向你展示如何修改它的域,,以便为微服务架构做好准备。最后,我将会简要地告诉你微服务架构的基础知识,并讨论其优缺点。 单体架构 每一种非垂直拆分的架构都是单体架构。软件设计中的垂直拆分意味着将应用程序划分为更多可部署的单元。这并不意味着单体架构不能水平划分。 单体这个词指的是软件的体系结构是由一个后端单元组成。我之所以说后端,是因为我认为单体架构可以在具有多个 UI(如 Web 和移动设备)的同时,仍然可以被看作为一个整体。 组件之间的通信主要通过方法的调用。 如果你的前端和后端是在物理上隔离的,但是它们仍然是一个整体,例如 API 和 Web 客户端。 除非你将后端划分为更多部署单元,否则在我看来你依旧是在使用单体架构。 单域模型 “域是计算机程序的目标主题领域。 形式上,它代表特定编程项目的目标主题。”—— 维基百科 用我的话说,域就是软件存在的原因和目的。我在 3 Domain-Centric Architectures Every Software Developer should Know 这篇文章中写了有关域的几个观点。 下图是一个将在线商城域可视化的结果。 Sales 和 Catalog 子域包含单个的 Product 实体。这种做法是不可取的,因为这将导致一个地方出现更多的问题。这违反了关注点分离原则。 强迫一个实体承担更多的责任,显然是不合理的。实体在这两种上下文中都包含未使用的属性。Sales 不需要知道产品的类别,并且对于 Catalog 来说,知道 Product 是如何将信息传递给客户并没有任何用处。 为了避免这个问题,我们需要找到 Sales 和 Catalog 上下文的边界来将它们分开。这就引出接下来要说的限界上下文。 限界上下文 限界上下文是上下文的边界,参考 [Idapwiki.com](https://ldapwiki.com/wiki/Bounded Context) 要指定限界上下文,我们需要识别出一个模型仍然有效的上下文范围。 我们可以通过对域中的每个实体问一个简单的问题来验证模型,即:这个实体对于哪个上下文有效? 当一个实体对多个上下文有效时,那么它应该被划分到多个上下文中。每个实体都具有与上下文相对应的属性。这一步结束后,你的应用就准备好迁移到微服务架构了。 下图是从在线商城域中对 Product 分离的实体类的可视化结果。 微服务架构 微服务架构是因为微服务从而闻名。它是不断细分的单体。微服务将大型系统划分为较小的部分。...