tensorflow例程


拟合曲线

#coding=utf-8
#https://www.cnblogs.com/qcloud1001/p/6739501.html
import tensorflow as tf

#输入x、y_,估计W、b
x = tf.placeholder(tf.float32)
W = tf.Variable(tf.zeros([1]))
b = tf.Variable(tf.zeros([1]))
y_ = tf.placeholder(tf.float32)

y = W * x + b

lost = tf.reduce_mean(tf.square(y_-y))
optimizer = tf.train.GradientDescentOptimizer(0.0000001)
train_step = optimizer.minimize(lost)

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

steps = 1000
for i in range(steps):
	xs = [i]
	ys = [3 * i]
	feed = { x: xs, y_: ys }
	sess.run(train_step, feed_dict=feed)
	if i % 100 == 0 :
		print "After %3d iteration: W:%f, b:%f, lost:%f." \
			 % (i,sess.run(W),sess.run(b),sess.run(lost, feed_dict=feed))

 eigenTensor

//http://eigen.tuxfamily.org/index.php?title=Tensor_support

#include <iostream>
#include <stdlib.h>
#include <unsupported/Eigen/CXX11/Tensor>
using namespace std;

int main(int argc, char **argv){
	Eigen::Tensor<double, 3> test(2,2,2);
	//第一层(第三维)
	test(0,0,0)=1;
	test(0,1,0)=2;
	test(1,0,0)=3;
	test(1,1,0)=4;
	//第二层(第三维)
	test(0,0,1)=5;
	test(0,1,1)=6;
	test(1,0,1)=7;
	test(1,1,1)=8;
	cout<<test<<endl;

	Eigen::Tensor<double, 6> epsilon1(2,2,2,2,2,2);
	int x=1;
	for (int i = 0; i < 2; i++)//6th
	  for (int j = 0; j < 2; j++)//5th
	    for (int k = 0; k < 2; k++)//4th
		 for (int l = 0; l < 2; l++)//3rd
		   for (int m = 0; m < 2; m++)
			for (int n = 0; n < 2; n++)
				epsilon1(m,n,l,k,j,i)=x++;
	cout<<epsilon1<<endl;
//-------------------------------

	Eigen::Tensor<double, 3> epsilon(3,3,3);
	epsilon.setZero();
	epsilon(0,1,2) = 1;
	epsilon(1,2,0) = 1;
	epsilon(2,0,1) = 1;
	epsilon(1,0,2) = -1;
	epsilon(2,1,0) = -1;
	epsilon(0,2,1) = -1;
	Eigen::Tensor<double, 4> grassmannIdentity(3,3,3,3);
	grassmannIdentity.setZero();
	// this is not the most efficient way to write such a product,
	// but is the only way possible with the current feature set
	for (int i = 0; i < 3; i++) {
	  for (int j = 0; j < 3; j++) {
	    for (int k = 0; k < 3; k++) {
		 for (int l = 0; l < 3; l++) {
		   for (int m = 0; m < 3; m++) {
		     grassmannIdentity(i,j,l,m) += epsilon(i,j,k) * epsilon(k,l,m);
		   }
		 }
	    }
	  }
	}

	// verify
	for (int i = 0; i < 3; i++) {
	  for (int j = 0; j < 3; j++) {
	    for (int l = 0; l < 3; l++) {
		 for (int m = 0; m < 3; m++) {
		   assert(grassmannIdentity(i,j,l,m) == (int(i == l) * int(j == m) - int(i == m) * int(j == l)));
		 }
	    }
	  }
	}

	// dimensionalities
	assert(epsilon.dimension(0) == 3);
	assert(epsilon.dimension(1) == 3);
	assert(epsilon.dimension(2) == 3);
	auto dims = epsilon.dimensions();
	assert(dims[0] == 3);
	assert(dims[1] == 3);
	assert(dims[2] == 3);
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值