python_slice构造函数

  • slice函数
    作用:
    用于创建一个Slice切片对象
    此对象存储一个节点的起始值,终止值和步长信息

slice(start,stop=None,step=None) 创建一个切片对象

  • slice的对象的属性
s.start		切片起始值,默认为None
s.stop		切片终止值,默认为None
s.step		切片步长,默认为None

说明:平常使用的[::]实际上是系统自动转换为
slice(start,stop,step)的对象然后传递给索引参数
即:L[::2] 实际上是L[slice(None,None,2)]
	更本质上是L.__getitem__(slice(None,None,2))

示例:

#在解释器中输入:
L = [1,2,3,4,5,6,7,8,9]
L[::2]		#[1,3,5,7,9]
L[slice(None,None,2)]		#[1,3,5,7,9]
L.__getitem__(slice(None,None,2))	#[1,3,5,7,9]

练习:

class MyList:
	def __init__(self,iterable):
		self.data = list(iterable)
	def __getitem__(self,i):
		if type(i) is int:
			print('正在做索引操作')
		elif type(i) is slice:
			print('正在做切片操作')
			print('切片开始值是',i.start)
			print('切片终止值是',i.stop)
			print('步长是',i.step)
		else:
			raise KeyError
		return self.data[i]

L = Mylist([1,3,5,7,9])
print(L[::2])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们有一个包含100个样本的数据集,每个样本有两个特征,一个是图像数据,一个是标签。我们希望使用TensorFlow的队列机制异步读取这些数据,并进行训练。 首先,我们可以使用tf.train.slice_input_producer函数将数据集切分成若干个batch,然后每个batch通过多个线程异步读取数据: ```python import tensorflow as tf # 构造数据集 data = [] for i in range(100): image = ... # 加载图像数据 label = ... # 加载标签数据 data.append((image, label)) # 定义batch大小和线程数 batch_size = 32 num_threads = 4 # 使用slice_input_producer函数将数据集切分成若干个batch image_batch, label_batch = tf.train.slice_input_producer(data, batch_size=batch_size, num_threads=num_threads) # 定义数据预处理函数 def preprocess(image, label): # 对图像数据进行预处理 image = ... # 对标签数据进行预处理 label = ... return image, label # 使用map函数将数据预处理函数应用到每个batch中的每个样本 image_batch, label_batch = tf.map_fn(preprocess, (image_batch, label_batch)) # 定义模型 ... # 定义损失函数 ... # 定义优化器 ... # 定义训练操作 train_op = ... # 启动会话 with tf.Session() as sess: # 初始化变量 sess.run(tf.global_variables_initializer()) # 启动多线程读取数据 coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(coord=coord) # 训练模型 for i in range(num_steps): _, loss_val = sess.run([train_op, loss]) # 关闭多线程 coord.request_stop() coord.join(threads) ``` 在上面的代码中,我们首先定义了一个包含100个样本的数据集。然后,使用tf.train.slice_input_producer函数将数据集切分成若干个batch,并通过多个线程异步读取数据。接着,我们定义了一个数据预处理函数,并使用tf.map_fn函数将其应用到每个batch中的每个样本。最后,我们定义了模型、损失函数和优化器,并使用tf.Session启动会话进行训练。在训练过程中,我们启动多线程读取数据,并在训练完成后关闭多线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值