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 ...
随机推荐
- 【动态规划】石子合并 luogu-1880
分析 简单的区间DP AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) memset(a,b,sizeo ...
- 从redis数据库取数据存放到本地mysql数据库
redis数据库属于非关系型数据库,数据存放在内存堆栈中,效率比较高. 其存储数据是以json格式字符串存储字典的,而类似的关系型数据库无法实现这种数据的存储. 在爬取数据时,将数据暂存到redis中 ...
- javascript学习(五)之标准对象
一.RegExp:正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则, 凡是符合规则的字符串,我们就认为它"匹配"了,否则,该字符 ...
- 第六篇--MFC美化界面
1.MFC如何设置背景颜色 首先,为对话框添加WM_CTLCOLOR消息,方法为:右击Dialog窗口 --> Class Wizard --> Messages --> WM_CT ...
- golang可执行文件瘦身(缩小文件大小)
起因 golang部署起来极其遍历,但有时候希望对可执行文件进行瘦身(缩小文件大小) 尝试 情况允许情况下,交叉编译为32位 删除不必要的符号表.调试信息 尝试用对应平台的upx打压缩壳 解决 经过多 ...
- python进程间的通讯实现
1:进程间通讯的方法:apply_async()非阻塞式通讯 apply()阻塞式通讯 2:使用Queue实现对Process创建的进程间通讯, Queue本身是一个消息队列程序,Queue常 ...
- java.lang.RuntimeException: Cannot create a secure XMLInputFactory 解决
客户端调用服务端cxf,服务端报 java.lang.RuntimeException: Cannot create a secure XMLInputFactory 我的cxf 版本 为 3.0. ...
- Spring Cloud Gateway自定义异常处理Exception Handler
版本: Spring Cloud 2020.0.3 常见的方法有 实现自己的 DefaultErrorWebExceptionHandler 或 仅实现ErrorAttributes. 方法1: Er ...
- Bugku-web-web8
可以看到题目提示了一个txt的东西,猜测目录下会有flag.txt这个文件. 通过代码审计我们可以知道得到flag的条件,访问flag.txt得到一串字符. 那么payload就很好构造了,$f的值是 ...
- C函数调用(2)
1 //函数调用 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <math.h> 6 //根据传入 ...