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 ...
随机推荐
- C++引用的概念以及基本使用
引言 引用是C++的新增内容,在实际开发中会经常使用:C++用的引用就如同C语言的指针一样重要,但它比指针更加方便和易用. 我们知道,参数的传递本质上是一次赋值的过程,即将一块内存上的数据复制到另一块 ...
- docker exec 参数详解
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container Options ...
- vant vue 屏幕自适应
手机端 pc端 屏幕自适应 一.新建 vue.config.js项目目录中没有 vue.config.js 文件,需要手动创建,在根目录中创建 vue.config.js const pxtorem ...
- 忘记oracle的sys和system的密码
step1:通过cmd打开命令提示符, sqlplus /nolog step2:输入conn /as sysdba step3:输入alter user system identified by 新 ...
- navicat连接MySQL数据库出现Authentication plugin 'caching_sha2_password的问题
1.以管理员身份运行cmd终端,cd 到mysql安装目录的bin文件夹下面 输入mysql -u root -p,回车键后输入密码登录mysql 依次输入一下三条命令: ALTER USER 'ro ...
- 关于intouch/ifix嵌入视频控件并使用(海康,大华)
2017年下半年项目开始接触利用intouch工控软件来进行项目二次开发.其中关于驱动的问题始终是上位机的重中之重,暂且不表(嘿嘿--),首先遇到的问题就是在弹窗中嵌入视频控件,监控设备的开停状态.经 ...
- Web实时更新客户端数据
1 轮询方式实现客户端数据及时更新 在基于Web的即时通信.股票行情这样的系统中,需要客户端能够及时更新内容.由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求, ...
- House_of_orange 学习小结
House_of_orange学习小结 house_of_orange最早出现在2016年hitcon的一道同名题目,其利用效果,是当程序没有free函数的时候,我们可以通过一些方法,来让chunk被 ...
- 小白学习Vue第五天(v-model实用的地方)
用法一radio单选项 <!-- 添加name男女选项互斥 --> <label for="male"> <input type="radi ...
- 如何评价《Java 并发编程艺术》这本书?
对于书评这件事情,我其实是不想写的,因为每个人都有自己的一个衡量标准,每个人眼中都有自己的哈姆雷特,是好是坏每个人都褒贬不一.如果对于书中的知识你都掌握了,你只是想把它作为一种知识串联的记忆体的话,那 ...