TensorFlow-Slim 简介+Demo
github介绍:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim
基于slim实现的yolo-v3(测试可用):https://github.com/mystic123/tensorflow-yolo-v3
简介
- TF-Slim是一个轻量级tensorflow库。
- 它可以使复杂模型的定义、训练、评估测试更简单。
- 它的组件,可以与tensorflow的其他库(如tf.contrib.learn)混合使用。
- 它允许用户更紧凑地定义模型,通过消除样板代码(boilerplate code)。
Demo
import tensorflow as tf
from tensorflow.contrib.layers.python.layers import layers as layers_lib
from tensorflow.contrib import layers
import tensorflow.contrib.slim as slim
from keras.datasets import mnist
import numpy as np
import math print("Hello slim.")
pixel_depth = 256
learning_rate = 0.01
checkpoint_dir = "./ckpts/"
log_dir = "./logs/"
batch_size = 1000 # Get the data, mnist.npz is in ~/.keras/datasets/mnist.npz
print("Loading the MNIST data in ~/.keras/datasets/mnist.npz")
(train_data, train_labels), (test_data, test_labels) = mnist.load_data()
train_data = train_data .reshape(-1,28,28,1).astype(np.float32)
train_labels = train_labels.reshape(-1) .astype(np.int64)
test_data = test_data .reshape(-1,28,28,1).astype(np.float32)
test_labels = test_labels.reshape(-1) .astype(np.int64) train_data = 2.0*train_data/pixel_depth - 1.0
test_data = 2.0*test_data /pixel_depth - 1.0 train_data = train_data[0:10000]
train_labels = train_labels[0:10000] print("train data shape:", train_data.shape)
print("test data shape:", test_data.shape) # slim.nets.vgg.vgg_16
def MyModel(inputs, num_classes=10, is_training=True, dropout_keep_prob=0.5, spatial_squeeze=False, scope='MyModel'):
with tf.variable_scope(scope):
with slim.arg_scope([slim.conv2d, slim.fully_connected],
activation_fn=tf.nn.relu,
weights_initializer=tf.truncated_normal_initializer(0.0, 0.01),
weights_regularizer=slim.l2_regularizer(0.0005)): net = slim.convolution2d(inputs, 8, [3, 3], 1, padding='SAME', scope='conv1')
net = layers_lib.max_pool2d(net, [2, 2], scope='pool1') net = slim.convolution2d(net, 8, [5, 5], 1, padding='SAME', scope='conv2')
net = layers_lib.max_pool2d(net, [2, 2], scope='pool2') net = slim.flatten(net, scope='flatten1') net = slim.fully_connected(net, num_classes*num_classes, activation_fn=None, scope='fc1')
net = slim.fully_connected(net, num_classes, activation_fn=None, scope='fc2') return net def train_data_batch(batch_size):
if not hasattr(train_data_batch, 'train_index'):
train_data_batch.train_index = 0
data_size = train_labels.shape[0]
idx = np.arange(train_data_batch.train_index, train_data_batch.train_index+batch_size, 1)
idx = idx % data_size
train_data_batch.train_index = (train_data_batch.train_index + batch_size) % data_size
yield train_data[idx] logits = MyModel(train_data)
loss = slim.losses.sparse_softmax_cross_entropy(logits, train_labels) total_loss = slim.losses.get_total_loss(add_regularization_losses=False) optimizer = tf.train.GradientDescentOptimizer(learning_rate) train_op = slim.learning.create_train_op(total_loss, optimizer)
slim.learning.train(train_op,
checkpoint_dir,
number_of_steps=100,
save_summaries_secs=5,
save_interval_secs=10) print("See you, slim.")
TensorFlow-Slim 简介+Demo的更多相关文章
- tensorflow saver简介+Demo with linear-model
tf.train.Saver提供Save和Restore Tensorflow变量的功能,常用于保存.还原模型训练结果,这在自己的训练和迁移学习中都很有用. 训练.保存脚本: import tenso ...
- 一、TensorFlow的简介和安装和一些基本概念
1.Tensorflow的简介 就是一个科学计算的库,用于数据流图(张量流,可以理解成一个N维得数组). Tensorflow支持CPU和GPU,内部实现了对于各种目标函数求导的方式. 2.Tenso ...
- 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介
平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...
- TensorFlow Serving简介
一.TensorFlow Serving简介 TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活.性能高.可用于生产环境. TensorFlow Ser ...
- 使用笔记:TF辅助工具--tensorflow slim(TF-Slim)
如果抛开Keras,TensorLayer,tfLearn,tensroflow 能否写出简介的代码? 可以!slim这个模块是在16年新推出的,其主要目的是来做所谓的“代码瘦身” 一.简介 slim ...
- Tensorflow 的Word2vec demo解析
简单demo的代码路径在tensorflow\tensorflow\g3doc\tutorials\word2vec\word2vec_basic.py Sikp gram方式的model思路 htt ...
- 人工智能 tensorflow框架-->简介及安装01
简介:Tensorflow是google于2015年11月开源的第二代机器学习框架. Tensorflow名字理解:图形边中流动的数据叫张量(Tensor),因此叫Tensorflow 既 张量流动 ...
- tensorflow lite的demo在android studio上环境搭建
由于很久没有接触过Android开发,而且最早用的是eclipse,所以这个demo在android studio上的搭建过程,真的是踩了不少坑.记录这篇文章,纯粹是给自己一点收获. 环境搭建的过程, ...
- TensorFlow Android Camera Demo 使用android studio编译安装和解决Execution failed for task ':buildNativeBazel'报错
可以参考官网:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#android-stud ...
随机推荐
- 以太坊-Mac环境下remix环境搭建
环境: 设备:MacBookPro 系统:macOS Catalina 10.15.7 芯片: intel i7 Node,npm,nvm安装 Node,npm的安装方式有很多种此处作者第一次通过命令 ...
- SSM中如何上传图片
1.文件配置 2.jsp页面 文件的name值不能跟数据库列名一致 3.控制层收集数据转发到逻辑层 4.逻辑层处理把用户信息存到数据库 5.注册成功后跳到jsp页面进行展示
- javascript里面的document.getElementById
一.getElementById:获取对 ID 标签属性为指定值的第一个对象的引用,它有 value 和 length 等属性 1.获取当前页面的值input标签值:var attr1=documen ...
- 用好Git stash,助你事半功倍
git stash: 用法:git stash list [<选项>] 或:git stash show [<选项>] [<stash>] 或:git stash ...
- 深入刨析tomcat 之---第8篇 how tomcat works 第11章 11.9应用程序,自定义Filter,及注册
writed by 张艳涛, 标签:全网独一份, 自定义一个Filter 起因:在学习深入刨析tomcat的学习中,第11章,说了调用过滤链的原理,但没有给出实例来,自己经过分析,给出来了一个Filt ...
- git 提代码时的相关命令,Mark一下
以前用命令提代码都是复制粘贴,现在换了工作后,特别是回退代码的命令又忘了,去网上查了好久,心累.特此Mark一下 1. 打patch: 1.1 git diff >> ljh.patch ...
- sql注入漏洞笔记随笔
sql注入是从1998年出现的,是一个十分常见的漏洞,它是OWASP top10的第一名(注入) 在了解sql注入之前,我们需要先了解web框架 webapp:web网站,这种方式它采用的是B/S架构 ...
- XCTF-ics-07(floatval函数特性+Linux目录结构特性)
直接进入到项目管理页面,给了三段源码. 第一段 <?php session_start(); if (!isset($_GET[page])) { show_source(__FILE__); ...
- BUUCTF[强网杯 2019]随便注(堆叠注入)
记一道堆叠注入的题.也是刷BUU的第一道题. ?inject=1' 报错 ?inject=1'--+ //正常 存在注入的.正常查询字段数,字段数为2.在联合查询的时候给了新提示 ?inject=0' ...
- miniFTP项目实战五
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...