首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

训练7万小时后,OpenAI的模型竟然学会在「我的世界」里刨木头

最近,似乎早已把GPT抛在脑后的OpenAI又整了个新活。 在经过海量无标注视频以及一点点标注过的数据训练之后,AI终于学会了在「我的世界」(Minecraft)里制作钻石镐。...数据虽多,但我用不上啊 「我的世界」作为沙盒建筑游戏,其玩家策略、游戏内虚拟环境的高开放性,特别适合作为各种AI模型学习、决策能力的测试场和试金石。...而且作为一款「国民级」的游戏,想在网上找到和「我的世界」相关的视频简直易如反掌。 然而,不管是搭建教程,还是炫耀自己的作品,从某种程度上来说都只是在画面上呈现出的结果。...OpenAI做了一项研究,展示了用VPT训练过的模型,再经过了微调之后,有多适应下游的数据集。 研究人员邀请人玩儿了10分钟的「我的世界」,用基础材料搭了个房子。...与之形成鲜明对比的是,VPT模型的微调不仅可以学习如何制作钻石镐,而且在收集所有物品方面的成功率,甚至达到人类水平。 而这是第一次有人展示能够在「我的世界」中制作钻石工具的计算机模型。

65910

独家 | 什么是Python的迭代器和生成器?(附代码)

在Python中创建一个迭代器 熟悉Python中的生成器 实现Python中的生成器表达式 为什么你应该使用迭代器? 什么是可迭代对象“可迭代对象是能够一次返回其一个成员的对象”。...以及我们的循环如何知道何时停止?进入到迭代器部分! 什么是Python迭代器? 迭代器是代表数据流的对象,即可迭代。它们在Python中实现了迭代器协议。这是什么?...我们在此处手动循环中所做的操作,for循环会自动执行相同的操作。这就是为什么for循环比遍历可迭代对象更可取,因为它们会自动处理异常。...if语句,只要值超过10,该语句就会停止迭代: it = Sequence() for i in it: print(i) 在这里,我没有使用next()方法从迭代器返回值,而是使用了...一个重要的问题:为什么要先考虑用迭代器? 我在文章开头提到了这一点:之所以使用迭代器,是因为它们为我们节省了大量内存。这是因为迭代器在生成时不会计算项,而只会在调用它们时计算。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (推荐,我的深度总结)聊聊为什么技术要先广后精,对技术新人的几点建议

    在我30岁生日那天的文章中,我在文末给技术新人的几点建议中,第一点就提出来了“技术要先广后精”这个想法,今天我想针对这一点来谈谈我的看法。 ? 企业喜欢什么样的人 ?...我认为,IT行业实际上是一个两极化非常严重的行业,有的人工资非常高,有的人却找不到工作,这是为什么呢?要回答这个问题,我们首先要了解工资高的这一波人中,都有什么共同点。...在这份JD中,我们可以看到,工作经验只要1~3年,但是却仍然需要对分布式计算、数据挖掘等相关内容比较熟悉,那么这个时候,我们似乎就有些疑问了,为什么现在都是在这么要求,我只在我自己的专业领域中做的好不可以吗...所以,我们再回到最初的问题上,为什么在各个企业的招聘JD上会有这么多的要求,实际上不是企业要求高,而是这些我们真的需要掌握。 技术要先广后精 ?...所以,话又说回来,为什么我认为技术要先广后精,因为只有站在全局来看待问题,你才能够知道应该从那个点突破,来去深入的研究,只有这样,我们才能使自己的职业道路走得越来越宽。

    77630

    零基础学习 Python 之初识迭代

    4.遍历(traversal) 遍历是指按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次,其实 for 循环就是一种遍历,至于什么是树形结构,emmmm…不是我们在这里讨论的重点。...的信息,即停止迭代。...在这我们还要再关注一下迭代器对象的另一个特点,看上上个的那个例子就可以知道,对象 my_iter 被迭代结束后,即每个元素都读取了一遍之后,指针就移到了最后一个元素后面,如果想要再访问的话,指针并没有自动移动到初始位置...到现在,对迭代器暂且有上述的了解,迭代器其实还要更深层次的使用,但是有一个典型的例子 -- 文件,这就是为什么我先把文件放在之前两天的文章来讲。...写在之后 初识迭代就到这结束了,其实迭代器远不止上述的那么简单,以后我们还会不断的遇到,我会在后续为大家带来深入理解迭代的文章。

    35010

    第四章3:while 循环

    我正在以推文形式连载出来,欢迎学习。 星期三:while循环 今天我们将讨论另一种循环——while循环。昨天我们看到了循环的工作原理,以及为什么要使用for循环。...For 虽然,我在之前已经多次解释了我们使用每个循环类型的原因,但是,再次重申这些概念仍然是有必要的。当需要计数或迭代时,通常使用for循环。在执行基于条件的操作时,通常使用while循环。...---- 无限循环 在之前的章节中,我曾提到无限循环是不好的。无限循环将使代码持续运行直到程序中断,或计算机关机或时间停止为止。知道了这些后,在我们创建项目时,请一定要避免创建无限循环的代码块。...而i值也仅在外循环运行时才会递增,直到内循环完成后才运行外循环。内循环必须每次从0到3(不包括3)计数才能运行下一个 外循环进行迭代。...星期三练习 1.用户输入:编写一个while循环,每次循环都会要求用户输入后才可运行,直到他们键入“quit”命令才会停止。

    1.5K20

    通过案例带你轻松玩转JMeter连载(11)

    图61 线程组 取样器错误后要执行的动作。 Ø 继续:忽略错误,继续执行。 Ø 启动下一进程循环:忽略错误,线程当前循环终止,执行下一个循环。...Ø 停止线程:当前线程停止执行,但是不影响其他线程正常执行。 Ø 停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止。...Ø 立即停止测试:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。 设置线程数。线程数也就是在线用户数,JMeter是通过一个线程来模拟一个虚拟用户的。 Ramp-Up 时间。...每个线程将在前一个线程启动后5/10=0.5秒后启动。 循环次数:该项设置线程组在结束前每个线程循环的次数,如果次数设置为1,那么JMeter在停止前只执行测试计划一次。...每次迭代都有相同的用户。 延迟创建时间知道需要。默认情况下,测试开始的时候,所有线程就被创建完了。如果选择了此选项,那么线程只会在合适的需要用到的时候创建。

    66730

    每周学点大数据 | No.46 MapReduce 平台的局限

    另外,每一个循环和迭代算法都要有停止判定,迭代MapReduce 也不例外,不过在测试迭代MapReduce 的算法是不是已经收敛时,往往不得不进行一轮额外的MapReduce,通过观察结果与上一轮是否有区别来判断迭代是否已经收敛...王:你想一想,循环和迭代时,我们一般以什么样的条件作为停止条件呢? 小可恍然大悟,说:当经过迭代之后结果已经不变时,停止迭代。...我懂了,x 相当于输入的数据,函数f 相当于本轮迭代的处理,如果f(x)=x,这说明本轮的输出已经和输入一样,也就是结果不变,这时就可以停止迭代了。 Mr....其二,在每一次迭代的过程中,都会由于MapReduce 的洗牌而重排L。另外,在每一次迭代中,不动点计算作为单独的MapReduce 工作执行,这也是明显的计算资源浪费。 ?...我们可以在Mapper 的输入前加一个输入缓存(MI),在Mapper 的输出后加一个输入缓存(MO),Reducer 的输入之前加一个输入缓存(RI),在Reducer 的输出后加一个输出缓存(RO)

    74850

    python迭代、可迭代对象、迭代器及生

    迭代 通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。...,for语句中给定了一个初始输入 i=0 ,然后开始执行一个重复推导变量 i 是否小于 100 ,如果小于就对 i 加1并执行循环体中代码的过程,且每次执行后的结果将作为下一次推导的输入值,这个过程就是迭代...这里之所以每次迭代时都让num的值加3,是为了说明语句块中对num进行修改后的值并不会带入到下一次迭代过程,这里应注意与C、C++、java等语言的for循环语句的区别。...至于为什么是这样,可以查阅python语法中for语句的执行原理,这里不再详述。 可迭代对象与迭代器 可迭代对象:使用内置iter函数可以获取迭代器的对象,称为可迭代对象。...每次使用yield生成一个值后,函数被中断,在此处停止执行,再次被调用时,函数将从上一次停止的地方开始继续执行。例如: ?

    1.3K21

    【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍?

    【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍?...Interval 初始以及停止时,都设置为 1,为的是启动的时候能马上触发一次。...然后问题就来了,修改间隔后的那次触发,距离启动时立马触发的那次,间隔时间达到了设定间隔时间的 3 倍,而且每次都是这样。...修改时间间隔的地方加上先停止后启动,问题依旧: 不使用异步方法,问题依旧: 怀疑是和线程池有关系,进而和 CPU 核心数有关,我这个是四核: 使用 毫秒定时器 [2] 或 多媒体定时器 [3]...[5])是这样说的: 因为怀疑计时不准,所以有好多人自己封装调用 winmm.dll 中的 “多媒体计时器” 来形成自定义的定时器,我尝试了两种(上面提到过),问题还是一样,所以可能他们这种不能解决我遇到的问题

    79210

    #7 Python顺序、条件、循环语句

    从上图可以看出,只要循环条件为真,那么循环语句就会被执行多次,Python语言中存在两种循环,一起来看看吧 for循环 for循环主要起到遍历元素的作用,第一次接触可能觉得怪怪的,不要担心,用熟了你就会发现...for循环可以和else配合使用,else的代码块会在for循环结束后执行,例如: 1 for element in ['Python', 'C', 'Java']: # 遍历列表 2 print...: 1 num = 0 2 while True: 3 num += 1 4 print(num) 执行后就会发现屏幕上不停的跑数字而不会停止,想要停止按下键盘 Ctrl + C 来强制停止...6 print('我要跳过一次循环啦') 7 continue 8 print('我正在循环') ?...我正在循环 我正在循环 我正在循环 我要跳过一次循环啦 我要跳过一次循环啦 输出结果 由上面代码可以看到,有两次循环被跳过,只输出了3次“我正在循环”,也可以看到continue并不会跳出循环,循环还会继续执行

    1.4K20

    你所不知道的Python迭代器

    迭代就是循环的意思,也就是对一个集合中的元素进行循环,从而得到每一个元素。对于我们自定义的类,也可以让其支持迭代,这就是本文要介绍的特殊成员方法__iter__的作用。...用该成员方法可以自定义一个Python迭代器 1 自定义可迭代的类 可能有的读者会问,为什么不使用列表呢?...当对象没迭代一次时,就会调用迭代器中的另外一个特殊成员方法__next__。该方法需要返回当前迭代的结果。...下面让我们先看一个简单的例子,在这个例子中,通过自定义迭代器对由星号(*)组成的直角三角形的每一行进行迭代,然后通过for循环进行迭代,输出一定行数的直角三角形。...从上面的代码可以看出,尽管在__next__方法中,当result大于500时抛出了StopIteration异常,但这个异常是在迭代的过程中由系统处理的,并不会在程序中抛出,所以如果要将无限迭代改成有限迭代

    39520

    Python的迭代器与生成器

    ,会有布尔返回值 可迭代对象的本质 我们分析对可迭代对象进行迭代使用的过程,发现每迭代一次(即在for...in...中每循环一次)都会返回对象中的下一条数据,一直向后读取数据直到迭代了所有数据后结束。...加了异常处理功能,取值到底后自动停止。 l = [1, 2, 3, 4] l_iter = l.__iter__() while True: try: item = l_iter....for循环 for循环就是基于迭代器协议提供了一个统一的可以遍历所有对象的方法,即在遍历之前,先调用对象的 __iter__方法将其转换成一个迭代器,然后使用迭代器协议去实现循环访问,这样所有的对象就都可以通...Iterable的迭代器,然后对获取到 的迭代器不断调用next()方法来获取下一个值并将其赋值给item,当遇到StopIteration的异常后循环结 束。...yield与return有类似的作用,都可以的返回一个值给上层,但是return会将当前的程序直接终止,而yield的作用是将该程序暂时挂起,这样再次引用这个函数时会从上一次停止的yield再次开始 每一次获取这个可迭代对象的值

    40320

    如何在 Linux 中使用 Bash For 循环

    /bin/bash for n in {1..7}; do echo $n done 执行 shell 脚本后,将列出范围内的所有值,类似于我们在简单循环中的情况。...continue 语句在满足特定条件时停止循环内的当前迭代,然后恢复迭代。 考虑如下所示的 for 循环。 #!...第 4 行:检查 n 的值,如果变量等于 6,则脚本向标准输出回显一条消息并在第 2 行的下一次迭代中重新启动循环。 第 9 行:仅当第 4 行的条件为假时才将值打印到屏幕。...以下是运行脚本后的预期输出。 使用“break”语句 顾名思义,“break”语句会在满足条件时停止或结束迭代。 考虑下面的 For 循环。 #!...第 4 行:检查 n 的值,如果变量等于 6,则脚本向标准输出回显一条消息并停止迭代。 第 9 行:仅当第 4 行的条件为假时才将数字打印到屏幕上。

    43740

    Java基础知识讲解(五)循环结构

    而对于后来每一次额外的循环,都会在开始前重新计算一次。 语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。...do-while循环的循环体至少执行一次。...for循环 语法结构 for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。...for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。...初始化部分设置循环变量的初值 B. 条件判断部分为任意布尔表达式 C. 迭代因子控制循环变量的增减 for循环在执行条件判定后,先执行的循环体部分,再执行步进。

    47320

    面试官:如何停止 JavaScript 中的 forEach 循环?

    JavaScript 中的 forEach 循环吗?...在回答这个问题时,我的回答导致面试官突然结束了面试。 我对结果感到沮丧,问面试官:“为什么?实际上可以停止 JavaScript 中的 forEach 循环吗?”...在面试官回答之前,我花了一些时间解释我对为什么我们不能直接停止 JavaScript 中的 forEach 循环的理解。 我的答案正确吗? 小伙伴们,下面的代码会输出什么数字呢?...我向面试官展示了这段代码,但他仍然相信我们可以停止 JavaScript 中的 forEach 循环。 天哪,你一定是在开玩笑。 为什么? 为了说服他,我不得不再次实现forEach模拟。...,回调将为数组的每个元素执行一次,并且我们无法过早地摆脱它。

    22330

    Go的发展,似乎正在走上“邪路”?

    如此一来,开发者就无法单纯通过阅读代码来理解特定 for ... range 循环到底会在后台执行怎样的操作。跟其他函数调用一样,它可能对应任何行为。...除此之外,在一般情况下,在循环迭代之后使用迭代器函数返回的参数是不安全的,因为迭代器数据可以在下一次循环迭代中重新使用这些参数。 Go 向来以代码内容易于阅读和理解,且代码执行路径清晰明确而闻名。...,在循环内部或者循环后立即手动检查迭代错误。...v 传递给回调,则此代码可能会中断,因为 v 内容可能在下一次循环迭代顺发生变化。...我相信只要核心 Go 团队专注于热循环优化,例如循环展开和使用 SIMD,这种趋势完全是可以逆转的。由于只需要对 Go 代码中的一小部分进行优化编译,所以不会对编译和链接速度产生太大影响。

    10110

    python流程控制

    while是一个条件循环语句,与if声明相比,如果 if 后的条件为真,就会执行一次相应的代码块。而while中的代码块会一直循环执行,直到循环条件不再为真。 while:适合于循环次数是未知的。...所有条目迭代完后, 迭代器引发一个StopIteration异常告诉程序循环结束,for语句在内部调用next()并捕获异常。...while循环是条件 性的,而 for 循环是迭代的,所以continue在开始下一次循环前要满足一些先决条件,否则循环会正常结束。...程序中当遇到 continue 语句时, 程序会终止当前循环,并忽略剩余的语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环,我们将验证条件表达式。...如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。

    1.9K40

    技术 | Python从零开始系列连载(十九)

    生成器 还记得在迭代器里我们说为什么将列表转为迭代器么?...为了实现后一项等于前两项之和使用了a,b = b,a+b 为什么这样写,留给大家思考~ 提示:可以输入n=3,自己感受一下调用函数过程中a和b的变化 值得注意的是,这个函数,当n=0时返回的是1,而不是正确的...当我们使用next(a)对生成器操作一次时,会返回循环一次的值 也就是在yield处结束本次运行 但它的特点就是下次使用next(a)时,接着上次的断点继续运行,直到下一个yield 不断使用next(...而结束后再使用next()会抛出异常 因为生成器属于迭代器 所以我们可以使用for循环去调用生成器 ?...我是使用打断来停止程序执行的,不然会不断执行下去 由于两个生成器(任务)交替执行,很快 就像在多任务执行 所以,通俗理解看上去同时执行的就是多任务~ 小明:竟然有这种操作!

    51130

    Solidity:控制语句

    2.1 for 循环 这种循环有三部分组成:初始化、条件和迭代。初始化运行一次,设定循环变量的起始值。条件是一个表达式,如果返回 true,循环就会继续;如果返回 false,循环就会结束。...迭代在每次循环的末尾发生,通常用来更新循环变量。...在 do while 循环中,循环至少会执行一次,因为在检查条件之前,循环的主体部分至少执行一次。然后,只要条件为 true,循环就会继续。一旦条件为 false,循环就会停止。...这就是 do while 循环的主要优势所在:它保证了循环至少执行一次。...所以,在使用 do while 循环时,开发人员必须谨慎,并确保他们的条件正确且一定会在某个时刻变为 false。

    8610
    领券