tensorflow中simnets的实现
simnets的Python项目详细描述
#tensorflow中的simnets tf
simnets实现
二进制安装
二进制安装需要CUDA工具包安装>;=7.5。<;br/>;
从github release选项卡下载.whl文件,然后键入:
````
python-m pip install<;whl file>;
````
应自动安装所有要求。
C++(11)支持的工作C++编译器(GCC & Gt;=4.7)
2。已安装CUDA工具包(用于NVCC)
3。cmake>;=3.0(<;code>;apt install cmake<;code>;)
4。为要使用的python解释器安装的tensorflow
<;b>;重要信息:<;/b>;以下命令应无错误运行:
````
python-c"将tensorflow导入为tf"
```
若要生成项目,请键入以下命令:<;br/>;
python 2.7:<;br/>;
```
git克隆——递归https://github.com/huji deep/simnets tf.git
cd simnets tf
mkdir build
cd build
cmake.-dcmake_build_type=release-dsimnets_python_version=2.7-dcmake_install_prefix=install
make-j simnet_ops
````
python 3.5:<;br/>;
`````
git clone——递归https://github.com/huji deep/simnets tf.git
cd simnets tf
mkdir build
cd build
cmake…-dcmake_build_type=release-dsimnets_python_version=3.5-dcmake_install_prefix=install
make-j simnet_ops
````
要测试现在可以键入的代码,请键入:
``````
make test_simnet_ops
``
这应该运行大约两分钟,并且返回时没有任何错误。<;br/>;
您可以创建一个.whl文件:
```
make create-wheel
```
由于运行(同样,请记住使用正确的解释器):
```
python-c'import simnets'
````
``keras
``python
import simnets.keras sk
import keras
from keras.datasets import mnist
from keras.models import model
from keras.layers从keras导入后端导入input、flatten、averagepooling2d、lambda
作为k
导入numpy作为np
28,28
数据,在列车和测试集之间的洗牌和拆分
(x列车,y列车),(x检验,y检验)=mnist.load数据
x列车=x列车.整形(x列车.形状[0],1,img列,img列)
x检验=x列车.整形(x列车.形状[0],1,img列,img列)
x检验=x列车.整形(x列车.形状[0],1,img列,img列)
x检验=x列车.整形(x列车.整形(x列车.形状[0],1,x列车.形状[0],1,imimg_cols)
输入样本形状=(1,输入样本行,输入样本列)
x U train=x U train.astype('float32')
x U test=x U test.astype('float32')
x U train=x U train/255.0-0.5
x U test=x U test/255.0-0.5
打印(x U train.shape[0],'train samples')
打印(x U test.shape[0],'测试样本样本[0],'测试样本样本打印(x U train.shape[0],'测试样本打印(x U train)
将类向量转换为二进制类矩阵
y_train=keras.utils.to_categorical(y_train,num_classes)
y_test=keras.utils.to_categorical(y_test,num_classes)
def sum_pooling_layer(x,pool_size):
x=averagepooling2d(pool_size=pool_size,padding=valid')(x)
x=lambda(lambda x:x*池大小[0]*池大小[1])(x)
返回x
a=输入(shape=(1,img\u rows,img\u cols))
b=sk.相似性(sim\u channels,
ksize=[2,2],跨步数=[2,2],相似性函数='l2',
规范化术语=真,填充=[2,2],超出界限值=np.nan,忽略输入值=true)(a)
,而b.shape[-2:]!=(1,1):
mex_channels*=2
b=sk.mex(mex_channels,
blocks=[int(b.shape[-3]),1,1],strips=[int(b.shape[-3]),1,1],
softmax_mode=true,normalize_offset=true,
使用非共享的_regions=true,非共享的_offset_region=[2])(b)
b=sum_pooling_layer(b,pool_size=(2,2))
b=sk.mex(num_classes,
blocks=[mex_channels,1,1],strips=[mex_channels,1],
softmax_mode=true,normalize_offset=tr我们,
使用未共享的区域=真的,共享的偏移区域=[1])(b)
b=扁平化(b)
model=model(输入=[a],输出=[b])
prinprint(model.summary())
model=model(输入=[a],输出=[b])
return k.categ分类的交叉熵(y假设,y假设,y假设,y假设,y假设,true)
>model.compile(损失=软最大损失, (model.summa())
优化器=k优化器。优化器。NADAM(LR=1E-2,epsilon=1E-6)NADAM(LR=1E-2,epsilon=1E-6),
metrics=['accuracity']
SK.执行无监督初始(模型,kmeans,层=none,数据=x U列,批量=100)
model.fit(x U列,y U列,y U列,
batU列,批量=批量大小,
epoch=epoch,
verbose=1,
verbose=1,
验证数据=(验证数据)=(验证数据=x_检验
score=model.evaluate(x_test,y_test,verbose=0)
print('test loss:',score[0])
print('test acacacacacacacacacacacacacacacacacacacacacacacacacacret,score[1])
```````
导入tensorfloas tf导入tensorflow作为tf从tensorflow导入tensorflow.examples.tutorials.tutorials.mnististist从simnets导入输入数据simnets导入相似性导入相似性导入相似性导入相似性导入相似性导入相似性导入数据
来自simnets.unsupervised impor无监督相似性理论
将matplotlib.pyplotlib.pyplotlib.pyplot导入plt
>mnist=inpu数据.读取数据集('mnist数据,one-hot=true)
sess=tf.interactivesession()
x,[-1,1,1,28,28,28]x=tf.float32,shape=[none,shape=[none,shape=[br/>x=tf.float32,shape=[none,784,shape=[none,784,shape=[none,784,784,shape=[10])
形状=[10,128,28,28]
templates=tf.variable(tf.truncut_-normal(shape,stddev=0.1),tf.truncut_-normal(shape,stddev=0.1))
weights=tf.abs(weights_-var)
sim=相似度(xr,templates,weights,相似度函数均为l2,ksize=[28,28],大踏步=[28,28,28,28],padding=[0,0,0])
y=br/>y=tf y=tf.resforme(sim,[-1,10])
kmo_init,kmo=similarity_un监督_init('kmeans,sim,templates,wei权值,sim,sim,templates,templates,wei权值)
cross_熵=tf.reduce平均值(
tf.nn.softmax_cross_cross_cross_cross_熵(labels=y,logits=y))
>train_step=tf.train.gradientDescentOptimizer(0.5)、最小化(cross(cross_熵)
对于范围(300)内的IDX,如果IDX==0:
batch=mnist.train.train.train.train.下一个批次(100)
def normalize(img):
返回(img-img.min())/(img.max()-img.min())
templates\u np=tf.get默认的会话().run(templates)run(templates)
plt.figu图(1)
i在范围(10):
plt.subblot(4,3,i+1)
plt.imshow(normalize(templates_np[i,0,…])
plt.show()
>idx在范围(1000):
batch=mnist.train.batch=mnist.train.train.train.train.train.下一批(100)
/>训练步骤。运行(feed dict={x:batcH[0],Y第[1]批处理[1]>
if(idx+1%1)%100==0:
print(idx+1,"/",1000)
正确预测=tf.相等(tf.argmax(y,1,y,1),tf.argmax(y,1))
precisc=tf.降低平均值(tf.cast(正确预测,tf.float32))
print('acacaccicici度:',acci精确度.eval(feed dict={x:mnistist.test.test.test.x,y:mnist.test.test.images;y,y:mnist.labels})
```
BR/>
simnets实现
二进制安装
二进制安装需要CUDA工具包安装>;=7.5。<;br/>;
从github release选项卡下载.whl文件,然后键入:
````
python-m pip install<;whl file>;
````
应自动安装所有要求。
C++(11)支持的工作C++编译器(GCC & Gt;=4.7)
2。已安装CUDA工具包(用于NVCC)
3。cmake>;=3.0(<;code>;apt install cmake<;code>;)
4。为要使用的python解释器安装的tensorflow
<;b>;重要信息:<;/b>;以下命令应无错误运行:
````
python-c"将tensorflow导入为tf"
```
若要生成项目,请键入以下命令:<;br/>;
python 2.7:<;br/>;
```
git克隆——递归https://github.com/huji deep/simnets tf.git
cd simnets tf
mkdir build
cd build
cmake.-dcmake_build_type=release-dsimnets_python_version=2.7-dcmake_install_prefix=install
make-j simnet_ops
````
python 3.5:<;br/>;
`````
git clone——递归https://github.com/huji deep/simnets tf.git
cd simnets tf
mkdir build
cd build
cmake…-dcmake_build_type=release-dsimnets_python_version=3.5-dcmake_install_prefix=install
make-j simnet_ops
````
要测试现在可以键入的代码,请键入:
``````
make test_simnet_ops
``
这应该运行大约两分钟,并且返回时没有任何错误。<;br/>;
您可以创建一个.whl文件:
```
make create-wheel
```
由于运行(同样,请记住使用正确的解释器):
```
python-c'import simnets'
````
``keras
``python
import simnets.keras sk
import keras
from keras.datasets import mnist
from keras.models import model
from keras.layers从keras导入后端导入input、flatten、averagepooling2d、lambda
作为k
导入numpy作为np
28,28
数据,在列车和测试集之间的洗牌和拆分
(x列车,y列车),(x检验,y检验)=mnist.load数据
x列车=x列车.整形(x列车.形状[0],1,img列,img列)
x检验=x列车.整形(x列车.形状[0],1,img列,img列)
x检验=x列车.整形(x列车.形状[0],1,img列,img列)
x检验=x列车.整形(x列车.整形(x列车.形状[0],1,x列车.形状[0],1,imimg_cols)
输入样本形状=(1,输入样本行,输入样本列)
x U train=x U train.astype('float32')
x U test=x U test.astype('float32')
x U train=x U train/255.0-0.5
x U test=x U test/255.0-0.5
打印(x U train.shape[0],'train samples')
打印(x U test.shape[0],'测试样本样本[0],'测试样本样本打印(x U train.shape[0],'测试样本打印(x U train)
将类向量转换为二进制类矩阵
y_train=keras.utils.to_categorical(y_train,num_classes)
y_test=keras.utils.to_categorical(y_test,num_classes)
def sum_pooling_layer(x,pool_size):
x=averagepooling2d(pool_size=pool_size,padding=valid')(x)
x=lambda(lambda x:x*池大小[0]*池大小[1])(x)
返回x
a=输入(shape=(1,img\u rows,img\u cols))
b=sk.相似性(sim\u channels,
ksize=[2,2],跨步数=[2,2],相似性函数='l2',
规范化术语=真,填充=[2,2],超出界限值=np.nan,忽略输入值=true)(a)
,而b.shape[-2:]!=(1,1):
mex_channels*=2
b=sk.mex(mex_channels,
blocks=[int(b.shape[-3]),1,1],strips=[int(b.shape[-3]),1,1],
softmax_mode=true,normalize_offset=true,
使用非共享的_regions=true,非共享的_offset_region=[2])(b)
b=sum_pooling_layer(b,pool_size=(2,2))
b=sk.mex(num_classes,
blocks=[mex_channels,1,1],strips=[mex_channels,1],
softmax_mode=true,normalize_offset=tr我们,
使用未共享的区域=真的,共享的偏移区域=[1])(b)
b=扁平化(b)
model=model(输入=[a],输出=[b])
prinprint(model.summary())
model=model(输入=[a],输出=[b])
return k.categ分类的交叉熵(y假设,y假设,y假设,y假设,y假设,true)
>model.compile(损失=软最大损失,
优化器=k优化器。优化器。NADAM(LR=1E-2,epsilon=1E-6)NADAM(LR=1E-2,epsilon=1E-6),
metrics=['accuracity']
SK.执行无监督初始(模型,kmeans,层=none,数据=x U列,批量=100)
model.fit(x U列,y U列,y U列,
batU列,批量=批量大小,
epoch=epoch,
verbose=1,
verbose=1,
验证数据=(验证数据)=(验证数据=x_检验
score=model.evaluate(x_test,y_test,verbose=0)
print('test loss:',score[0])
print('test acacacacacacacacacacacacacacacacacacacacacacacacacacret,score[1])
```````
导入tensorfloas tf导入tensorflow作为tf从tensorflow导入tensorflow.examples.tutorials.tutorials.mnististist从simnets导入输入数据simnets导入相似性导入相似性导入相似性导入相似性导入相似性导入相似性导入数据
来自simnets.unsupervised impor无监督相似性理论
将matplotlib.pyplotlib.pyplotlib.pyplot导入plt
>mnist=inpu数据.读取数据集('mnist数据,one-hot=true)
sess=tf.interactivesession()
x,[-1,1,1,28,28,28]x=tf.float32,shape=[none,shape=[none,shape=[br/>x=tf.float32,shape=[none,784,shape=[none,784,shape=[none,784,784,shape=[10])
形状=[10,128,28,28]
templates=tf.variable(tf.truncut_-normal(shape,stddev=0.1),tf.truncut_-normal(shape,stddev=0.1))
weights=tf.abs(weights_-var)
sim=相似度(xr,templates,weights,相似度函数均为l2,ksize=[28,28],大踏步=[28,28,28,28],padding=[0,0,0])
y=br/>y=tf y=tf.resforme(sim,[-1,10])
kmo_init,kmo=similarity_un监督_init('kmeans,sim,templates,wei权值,sim,sim,templates,templates,wei权值)
cross_熵=tf.reduce平均值(
tf.nn.softmax_cross_cross_cross_cross_熵(labels=y,logits=y))
>train_step=tf.train.gradientDescentOptimizer(0.5)、最小化(cross(cross_熵)
对于范围(300)内的IDX,如果IDX==0:
batch=mnist.train.train.train.train.下一个批次(100)
def normalize(img):
返回(img-img.min())/(img.max()-img.min())
templates\u np=tf.get默认的会话().run(templates)run(templates)
plt.figu图(1)
i在范围(10):
plt.subblot(4,3,i+1)
plt.imshow(normalize(templates_np[i,0,…])
plt.show()
>idx在范围(1000):
batch=mnist.train.batch=mnist.train.train.train.train.train.下一批(100)
/>训练步骤。运行(feed dict={x:batcH[0],Y第[1]批处理[1]>
if(idx+1%1)%100==0:
print(idx+1,"/",1000)
正确预测=tf.相等(tf.argmax(y,1,y,1),tf.argmax(y,1))
precisc=tf.降低平均值(tf.cast(正确预测,tf.float32))
print('acacaccicici度:',acci精确度.eval(feed dict={x:mnistist.test.test.test.x,y:mnist.test.test.images;y,y:mnist.labels})
```
BR/>