О Михаиле Задорнове |
|
|
О несбывшемся грядущем |
|
|
О выборах |
|
|
О жаргоне |
Выдающийся русский ученый Е. Д. Поливанов, изучая нагасакский диалект, освоил его настолько, что мог на нем говорить; однако это вызвало отрицательное отношение местных жителей [Сугито, 1983, с. 199]: иностранец ни в какой ситуации не может считаться «своим».
Очень простая мысль приведена в этой цитате: отношение к человеку может быть самым доброжелательным и доверительным, но это не делает его своим. Верно и обратное: не всякому своему будешь смело доверять. То, насколько отношения хорошие, и насколько они близкие -- это ортогональные оси, можно двигаться по одной, оставаясь на одном месте другой.
Но почему же этого не понимаю наши маркетологи? Идёшь по улице, а там шутец ртом из одной армянской юмористической передачи предлагает купить "ноут", в котором "два ядра - два гига". Едешь в метро -- а там собрание творчески переработанных мемов YouTube предлагает "подключить крутую локалку". Ещё дольше пошли одесские братья по разуму, придумавшие рекламу приюта для животных на основе Advice Dog'а.
Неужели они не понимают, что делают? Жаргон возникает для упрощения неформального (никому не придёт в голову присать в технической документации о том, как "скомпилять прогу") общения между людьми, хорошо разбирающимися в предмете. И скажие, кто лучше разбирается во влиянии объёма ОЗУ на скорость выполнения задач на многозадачных системах и тонкостях многопоточной оптимизации: генаильные маркетологи или школьники, на которых реклама рассчитана? Какой смысл в потрблении жаргона в таком контексте?
Надо же понимать, где какой стиль речи уместен! Конечно, реклама -- это не официальная бумага, но всё же это публичное заявление. По-моему, использовать такую лексику в рекламе знчит просто не уважать потенциального покупателя.
|
|
О физике летающей метлы |
Посмотрев великолепный мультфильм «Ведьмина служба доставки» (a.k.a. «Kiki's delivery service»), я наконец-то понял, как работает летающая метла! Зайчатки идей по этому поводу у меня появлялись давно, но все они основывались на предположении, что метла — это очень сложно техническое устройство, что никак не согласовывалось с реальностью (блин, я реально упоротый), в которой метла представляет собой обычную метлу, и все тонкости изготовления касаются древесины, формы древка и помела и прочих деталей, никак не похожих на урановые ломы и высокотемпературные сверхпроводники.
Но теперь мне всё стало ясно! Гениальный Хаяо Миядзаки не только сделал замечательный мультфильм, но и с фотографической точностью изобразил все эффекты, возникающие при полёте метлы.
Я наконец-то осознал, что главным звеном в связке ведьма-метла является ведьма, а не метла. Разумеется, человеку, привыкшему к окружению техники, делающей за него всё, кажется очевидным, что метла должна быть самостоятельным транспортным средством, способным к самостоятельному полёту. Но ведь речь идёт о ведьмах! Они с помощью своих колдовских способностей делают то, в чём обычные люди полагаются на технику. Так и в полёте. Полёт обеспечивает волшебная электродвижущая сила (ВЭДС), создаваемая ведьмой по оси дверка. ВЭДС представляет собой высокочастотные импульсы с крутыми фронтами. Дерево является хорошим диэлектриком, поэтому в нём возникает сильный ток смещения. За счёт того, что древко и помело сделаны из разных сортов дерева с, соответственно, разной работой выхода электронов, возникает постоянная разность потенциалов. Важно выбрать сорта так, чтобы на помеле был минус.
Заряд начинает стекать, но площадь, с которой он стекает на дверке, значительно меньше площади на помеле. Поэтому полученный ионный ветер дует назад. Сильно назад и сильно дует. Таким образом, у нас есть сила тяги, направленная по оси древка.
Для вертикального взлёта этого достаточно. За исключением того, что метла должна для этого находить вертикально. Но если предположить, что ВЭДС может иметь анизотропию относительно оси древка, то направлением потока можно управлять, отклоняя его на углы вплоть до 45 градусов. Значит, метлу достаточно держать под таким же наклоном, чтобы возникла подъёмная сила. Но не всё так просто. Центр приложения подъёмной силы находится на древке. Центр же тяжести человека (пренебрегаем массой метлы) — чуть выше пояса. Значит, относительно центра тяжести есть момент, стремящийся повернуть систему против часовой стрелки (смотрим с левого бока, древко направлено направо). Это значит, что надо не только наклонить метлу, но и ведьме сесть совсем рядом с древком, да ещё и сильно отклониться назад. Только в таком режиме возможен вертикальный взлёт.
Для горизонтального полёта достаточно наклониться чуть вперёд или же уменьшить анизотропию ВЭДС, уменьшив угол её отклонения от оси древка. Возникнет горизонтальная составляющая силы, и метла полетит. Но не всё так просто. Центр тяжести находится не только впереди центра приложения подъёмной силы (из-за чего надо отклоняться назад), но и выше его! Значит, при ненулевой горизонтальной составляющей силы тяги есть момент, закручивающий систему по часовой стрелке! Следовательно, надо отклониться чуть вперёд от положения равновесия. Причём, во время разгона, торможения и горизонтального полёта величины отклонения разные.
Но лететь на одной силе тяги, подобно вертолёту, как-то не экономно. Вспомним, однако, что человек тоже может летать! Поток скоростью всего 200 км/ч, направленный в лицо лежащему человеку, уже может удерживать его на одном месте. Человек, находящийся под углом 45 градусов по отношению к потоку, испытывает силу, перпендикулярная потоку составляющая которой составляет sqrt(2) от всей силы, действующей на него. К тому же, сама сила, пропорциональная площади перпендикулярной проекции на поток, будет в sqrt(2) раз меньше, чем от потока, направленного перпендикулярно. Таким образом, поток на скорости 200*sqrt(2)*sqrt(2)=400 км/ч гарантированно способен удержать человека в воздухе. Но это верхняя оценка. То есть, я гарантирую, что на такой скорости человек уже будет лететь, но реально подозреваю, что полетит и на меньшей: я не учитываю эффект Коанды, за счёт которого в создании подъёмной силы участвуют оба потока: верхний и нижний, так что реально, думаю, где-то на скорости 250 уже не будет никакой необходимости в вертикальной составляющей силы тяги. Но при одном условии: аэродинамическая характеристика тела должна быть высокой, а это зависит от позы. Так что правильная посадка на метле — очень важный элемент лётной техники.
Но тут ещё одна тонкость: аэродинамическая подъёмная сила приложена к геометрическому центру тела, а не к центру тяжести. Геометрический центр находится чуть выше, чем у тяжести. Значит, при аэродинамическом полёте возникает момент, стремящийся повернуть систему по часовой стрелке! Иными словами, моменты от горизонтальной составляющей силы тяги и от аэродинамической подъёмной силы действуют в одном направлении, а вертикальная составляющая силы тяги — в другом. Причём, при постоянной силе тяги с уменьшением угла атаки увеличивается момент аэродинамической силы, уменьшается момент горизонтальной составляющей силы тяги, но увеличивается момент её вертикальной составляющей (если она есть).
На большой скорости это даёт интересные эффекты. Момент аэродинамической подъёмной силы уменьшить невозможно. Уменьшается он только из-за уменьшения подъёмной силы, а она уменьшается при уменьшении угла атаки. Но если её уменьшить, то для сохранения высоты надо увеличить вертикальную составляющую силы тяги. Их моменты действуют в противоположном направлении, так что это то, что нам нужно.
Но это при постоянной скорости. Если скорость надо увеличить, то надо уменьшить угол атаки для сохранения той же подъёмной силы. Уменьшим угол атаки — возрастёт момент аэродинамической силы. Придётся увеличивать момент силы тяжести. Но бесконечно увеличивать его нельзя — иначе не сохранить прежнюю высоту. Это значит, что отношение скорости полёта к высоте, на которой он проходит (точнее, к плотности воздуха на ней) — величина, которая не может быть больше некоторой константы. И для скоростных полётов надо уходить на тысячи метров вверх.
И, кстати, при аэродинамическом полёте почти вся сила, создаваемая метлой, направлена горизонтально, поэтому ведьма не сидит на метле, а буквально за неё держится, не давая улететь вперёд.
Теперь об устойчивости и маневрировании. При полёте на одной силе тяги (взлёт, посадка, зависание) устойчивость достигается только за счёт изменения силы тяжести — изменения посадки. Для поворота нужно создать анизотропию ВЭДС так, чтобы она направила силу тяги в горизонтальной плоскости перпендикулярно проекции метлы на неё. Тогда метла повернётся, и возникнет перпендикулярная направлению полёта составляющая горизонтальной составляющей силы тяги. Она и изменит направление полёта. Регулировка скорости подъёма достигается изменением ВЭДС.
При аэродинамическом полёте устойчивость по оси крена придаёт подъёмная сила, центр приложения которой находится выше центра тяжести. Устойчивости же по оси рыскания нет, равновесие неустойчивое, поэтому она регулируется ВЭДС. Поворот осуществляется наклоном по оси крена, как и у самолёта.
|
|
О жидком вакууме |
Недавно как бы внезапно глубокой ночью ко мне в голову пришла гениальная идея: как получить в домашних условиях вакуум.
Вакуум — штука очень полезная. Неоднократно я читал сообщения об осуществлении в мелких лабораториях (не школьных, конечно, но где-то уровня средней паршивости университета) управляемой термоядерной реакции. Разумеется, ни о каких электростанциях речи не идёт: энергопотребление установок значительно превышает даже полный выход тепла от реакции. Да и сама реакция (её можно даже сфотографировать) выглядит без всякого пафоса, будучи похоже на обычную электрическую дугу, отличаясь от неё только выходом нейтронов. Но всё равно идея термоядерного реактора захватила моё воображение. Установки, о которых я читал, работали по принципу электростатического сжатия. Мне же пришла в голову мысль осуществить реакцию на встречных пучках. Потенциальный барьер термоядерной реакции составляет всего 100 КэВ. Такая энергия относительно легко достижима. В случае разгона частиц постоянным электрическим полем это означает потенциал в 100 киловольт. Для связки катушки Теслы с генератором Маркса это вполне достижимая величина. Проблемы промышленного термоядерного синтеза совсем не в этом, также как и принципы, которые там используются. Описанным методом вообще невозможно получить положительный выход энергии.
Но прежде, чем думать о малом ядрёном коллайдере, надо хотя бы простой электровакуумный диод смастерить, чтобы провести необходимые побочные исследования. Первой и главной проблемой на пути к диоду является вакуум. Во-первых, вакуум сложно держать. Приходится использовать хитрые приёмы, чтобы не было протечек из воздуха. Во-вторых, вакуум сложно получить. Ну, если быть совсем точным, то это никакие не проблемы, давно они решены. Но оборудование очень дорогое. Свои деньги на такое тратить жалко. Вот Российского фонда фундаментальных исследований — пожалуйста. Одна проблема: гранта там мне никто не даст. Так что приходится придумывать свои решения.
И я таки придумал! Итак, для опыта потребуются: ~13 метров прочного поливочного шланга (желательно, прозрачного), три поворотных водопроводных крана, четыре штуцера-ёлочки, четыре хомута, маленькая стеклянная бутылка, около 5 литров (зависит от диаметра шланга) любого масла (тут важна высокая вязкость и низкое давление насыщенных паров, и, как я прикинул, дешевле всего выйдет фиговое подсолнечное, моторное, почему-то сильно дороже стоит), лампочка от карманного фонаря, медная пластина, провода, ведро.
Вакуум будет получаться в бутылке (её нижней части, если быть точным), поэтому там будет экспериментальная установка. Она будет представлять собой медную платину и находящуюся рядом с ней лампочку со снятым стеклом. К ней должны вести три провода: два к контактам лампочки и один к пластине. Держаться на месте вся конструкция будет за счёт жёсткости проводов, прикреплённых в свою очередь, к горлышку. Дальше от этих проводов будут идти более тонкие, уже подключаемые к внешним приборам. Как вариант, вместо проводов можно использовать стальные стержни от сварочных электродов. После того, как провода укреплены и выведены, горлышко покрывается эпоксидкой, и на него насаживается разогретый шланг. Его короткий отрезок идёт до первого крана со штуцером. От него ещё один до ещё одного такого же. Третий же кран будет расположен на самом конце шланга, спустя 12 его метров. Всё, установка готова.
В начале эксперимента все краны открыты. Бутылка стоит прямо. Вся конструкция заполняется маслом, причём так, чтобы внутри не оставалось пузырьков воздуха (пусть идеала не добиться, но надо стараться). После этого третий кран закрывается. Теперь бутылка переворачивается в рабочее положение вверх дном. Нижний конец шланга теперь надо спустить на 12 метров. В данном случае мне повезло: примерно на такой высоте от земли у меня дома окна находятся. Помним, что конструкция заполнена маслом. Ясно, что на нижний кран изнутри давит весь столб масла, причём с давлением ровно в одну атмосферу.
На уровне земли ставится ведро с небольшим количеством масла (ровно таким, чтобы кран можно было в нём полностью скрыть. Это и делается. После чего кран открывается. До этого момента между маслом в шланге и в ведре был перепад в одну атмосферу. Но после открытия перепад должен исчезнуть. Не может не исчезнуть. Иными словами, если раньше сумма давления масла в бутылке наверху (одна атмосфера: вспомним, что именно при таком давлении система заполнялась) и столба масла составляла две атмосферы, то теперь она должна составить одну атмосферу.
Давление столба прямо зависит от его высоты. Исчезнуть оно не может, если только столб полностью не упадёт. Но упасть он не может, ведь тогда давление внизу станет нулевым. Значит, столб упадёт совсем чуть-чуть, оставив вверху бутылки полость с вакуумом. Есть!
Вакуум получен. Но его надо сохранить. Вакуумные соединения — штука сложная. Но я придумал, как без них обойтись. Ведь вакуум есть только в верхней части бутылки, где никаких соединений нет. В остальных местах всё заполнено маслом. А масло — не воздух, оно так просто свистеть не будет.
Поэтому верхние два крана закрываются, а длинную часть шланга можно отсоединять. Отрезок шланга между двумя верхними кранами перед этим изгибается коленом. Так что, даже если пузырёк воздуха пройдёт через второй кран, он останется в колене. Конечно, давление масла при этом возрастёт, и оно должно было бы подняться. Но для этого есть первый кран. Он уже держит не перепад воздух-масло, а масло-масло. Причём перепад незначительный: в один пузырёк воздуха. Такое он уже выдержит.
Что же до эксперимента, то тут всё просто. На лампочку подаётся накал — штатное напряжение в три вольта. С раскалённой спирали идёт термоэлектронная эмиссия. Между же одним (любым) контактом лампочки и пластиной прикладывается более высокое напряжение. Самый простой выход: из сети. Только надо последовательно подключить какой-нибудь мощный прибор типа нагревателя, чтобы обезопасить себя на случай пробоя.
В ходе эксперимента я хочу: изучить возможность получения вакуума таким способом; исследовать вольт-амперную характеристику полученного диода; определить влияние магнитного поля на поток электронов в диоде.
|
|
О Planetes |
За два, залпом, практически не отрываясь посмотрел аниме ΠΛΑΝΗΤΕΣ. Чёрт, до чего же оно прекрасно! Ничего подобного в научной фантастике я ещё не видел никогда. По своему уровню, как мне кажется, ΠΛΑΝΗΤΕΣ приближается к «Космической Одиссее 2001» Кубрика, с той лишь разницей, что Одиссея про философию, антропологию и прочий серьёзный бизнес, а ΠΛΑΝΗΤΕΣ именно про технический прогресс и его влияние на людей, моральные и социальные аспекты. Что-то тут даже есть от киберпанка, дух очень похожий, только киберпанк обычно рассказывает про успехи компьютерных технологий, а ΠΛΑΝΗΤΕΣ – про освоение космоса.
И просто потрясающе рассказывает! Я не специалист по орбитальной механике, и траектории кораблей рассчитывать не умею (разве что могу в лоб из Ньютоновской механики выводить, но подозреваю, что тут же натолкнусь на системы нелинейных дифференциальных уравнений), но тем не менее чётко понимаю, что маневрирование на орбите — очень сложная задача, поэтому никак не могу проникнуться фантастикой типа «Звёздных войн» или «Стартрека»: ну не могут корабли так летать, звук в космосе не распространяется, а луч лазера не виден. Такая фантастика для меня как сказка: забавно, но не более. Как при всём желании я не могу искренне сопереживать Колобку, поставив себя на его место, так и не могу сопереживать экипажу «Энтерпрайза», превозмогающего притяжение чёрной дыры. Они все не из моего мира, а из какого-то далёкого и неестественного.
Но в ΠΛΑΝΗΤΕΣ этого всего нет! Это хоть и скорее оптимистичный, но прогноз на будущее. На такое, которое может наступить. Нет пафосных кораблей, бороздящих просторы Галактики. Есть лишь несколько лунных городов с небольшим населением сотрудников ресурсодобывающих компаний. И до Луны лететь четыре для (для сравнения: Аполлоны долетали за 7, действие в аниме происходит через сто лет после этих полётов), потому что по-прежнему везде используются двигатели на химическом топливе. Нет, термоядерный реактор всё же изобрели, и энергетика Земли держится именно на них, и термоядерные двигатели тоже существуют, но стоят они безумно дорого и применяются только для исследовательских полётов на Марс. Дальше, кстати, никуда люди так и не полетели, хотя одна из линий сюжета вьётся вокруг первого полёта на Юпитер.
И как же реалистично показан космос! Это просто поражает воображение. Корабли летают по орбитам! Так, как и должны. Чтобы перейти с одной орбиты на другую, надо повернуть корабль, включить двигатель, подождать, выключить. Никаких резких разворотов: выдержит корабль, так не выдержит экипаж. И никаких защитных полей: астероиды и космический мусор представляют собой очень серьёзную угрозу, собственно именно космический мусор является главной темой. Космонавты в открытом космосе подвержены влиянию радиации, и те, кто провёл там многие годы, умирают от рака. Чтобы маневрировать в открытом космосе, нужны миниатюрные двигатели, управлять которыми надо долго учиться.
Заслуживает уважения и социальная сторона повествования. Показаны не только чувства главных героев, но и глобальные социальные процессы, настроение всего мира. Вроде всё повествование в космосе, но зрителю не дают забыть, что огромная космическая станция, напичканная самыми современными технологиями, иногда пролетает над разорившимися ближневосточными экспортёрами нефти и умирающими от голода тропическими странами. А уж описание внутреннего мира персонажей вообще на высоте. Как можно остаться романтиком, когда космос является лишь работой? И насколько в ином свете представляются отношения между людьми там.
По-моему, это действительно шедевр, получающий заслуженные 10/10.
|
|
О тонкостях обучения |
Вчера я таки капитально засел за расшифровку энцефалограмм. Я нашёл замечательную сишную библиотеку для создания многослойных полносвязных перцептронов под названием fann. Её несомненное достоинство в том, что она работает через файлы: из файла читает обучающее множество и в файл пишет обученную нейросеть.
К вопросу обучающего множества я также подошёл основательно: запись ЭЭГ велась почти 10 минут (писал я лёжа с закрытыми глазами, чтобы минимизировать сторонние факторы), за это время было набрано 867 отсчётов, среди которых записанных со звуком и без него было примерно поровну. Кстати, странный факт: при инициализации класса потока, отвечающего за рандомное воспроизведение звука, происходит проверка, за какое время происходит воспроизведение звука, а потом значение этого времени используется для того, чтобы определить время, на которое потоку надо заснуть. Должно. На практике, почему-то, для равномерного распределения пришлось это время удвоить.
После этого я начал гонять множество через нейросеть. Сначала я взял простой однослойный перцептрон. Ну, как однослойный, формально -- трёхслойный: 40 рецепторов, 40 основных нейронов и один выходной, но проще считать только вычислительные слои. Гонял я до ошибки 0,001. Это заняло не так много времени -- около десяти минут, после которых программа радостно объявила о том, что нейросеть готова. Её надо было проверять.
А записал я не только обучающее множество. Ещё я сделал две небольшие записи: с постоянно включённым звуком и постоянно выключенным. Очевидно, что хорошо обученная нейросеть должна была на большинстве отсчётов первой записи ответить, что звук выключен, а на второй -- что включён. Ответ нейросети представлял собой число: -1, если выключен и 1 если включён. Я взял тестовые множества, прогнал их через сеть и посчитал среднее значение ответа. На обоих множествах они слабо отличались от нуля. Прозреваю, что чем больше множества были бы, тем ближе к нулю устремились бы ответы. Иными словами, ответы были по сути случайными.
Потом я подумал -- а что, собственно, я хочу от однослойного перцептрона? У меня тут очень сложна функция, поэтому нужен минимум трёхслойный. Ну ладно, три так три. Сделал три слоя по 80 нейронов. Сначала попробовал тренировать до той-же ошибки 0,001. Результат на тестовых множествах был уже интереснее: около -0,1 на отключённом звуке и около 0,1 на включённом. Это меня впечатлило, и я погнал тренировать её ещё, до 0,0001. Вот это уже было серьёзно. Хоть библиотека и на Си, но моя ееешка думала почти полтора часа на максимальной производительности. И нифига. Почти в пределах статистической погрешности.
Какие можно сделать выводы?
1. Маленькое обучающее множество.
2. Неправильная топология нейросети.
3. Неправильный подход к обучению.
4. Невозможность решения задачи выбранными средствами.
Насчёт множества -- попробую исправить, может, даже где-нибудь с час буду писать.
Насчёт нейросети. Выбор топологии -- тоже хитрость, и я ей не владею. Надо думать.
Обучение. Мне уже приходила в голову мысль, что обучение с учителем в данном случае может быть неприемлем, нужна самообучающаяся сеть, пусть она сама разбирается, где что. Проблема одна: я не видел готовых библиотек для таких сетей. А чтобы писать самому, надо в нейросетях разбираться получше.
И наконец последнее. Вполне возможно, что сходу определить по энцефалограмме факт наличия или отсутствия звука вообще невозможно. Не исключено, что зафиксировать можно только переходы: если иметь две записи: со звуком и без, то определить какая из них какая можно, но по оной это сделать невозможно. Или же нужна нейросеть с обратными связями, иными словами -- с памятью. Но такие топологии -- это уже запредельный хардкор, мне бы сначала с обычными слоистыми структурами разобраться, а потом уже свои топологии лепить.
Алсо, я просто оставлю это здесь:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pynia
import threading
import mutex
import random
import math
import time
class Singer(threading.Thread):
def __init__(self, dsp, string_to_sing, repeats, sound_on_mutex, release_mutex):
self.dsp = dsp
self.str = string_to_sing
self.reps = repeats
self.snd = sound_on_mutex
self.cangodrink = release_mutex
time1 = time.time()
dsp.write(self.str)
self.dsp.flush()
time2 = time.time()
self.delay = time2 - time1
self.cangodrink.unlock()
threading.Thread.__init__(self)
def run(self):
for i in xrange(self.reps):
if random.random() < 0.5:
self.snd.lock(lambda x: x, None)
self.dsp.write(self.str)
self.dsp.flush()
self.snd.unlock()
else:
self.snd.unlock()
time.sleep(2*self.delay)
print "Завершено", i, "итераций из", self.reps
self.cangodrink.lock(lambda x: x, None)
class Writer(threading.Thread):
def __init__(self, nia, sound_on_mutex, release_mutex):
self.nia = nia
self.snd = sound_on_mutex
self.cangodrink = release_mutex
self.result = []
threading.Thread.__init__(self)
def run(self):
while not self.cangodrink.test():
self.nia.record()
self.nia.process()
#print self.nia.Fourier_Image
sound = int(self.snd.test())
if sound == 0:
sound = -1
#print sound
sample = [list(self.nia.Frequencies), sound]
#print sample
self.result.append(sample)
print "Запись завершена. Записано", len(self.result), "отсчётов"
def get_result(self):
return self.result
def create_string(coeff, lng):
lst = [chr(int(math.sin(float(x)/float(coeff))*127.0+127.0)) for x in xrange(lng)]
string = ""
for x in lst:
string +=x
return string
def main():
sound_on_mutex = mutex.mutex()
release_mutex = mutex.mutex()
nia = pynia.NIA_Data(25)
dsp = open("/dev/dsp", mode = "write")
string_to_sing = create_string(1.5, 5000)
singer = Singer(dsp, string_to_sing, 100, sound_on_mutex, release_mutex)
writer = Writer(nia, sound_on_mutex, release_mutex)
nia.calibrate()
start_time = time.time()
singer.start()
writer.start()
while True:
if release_mutex.test():
break
stop_time = time.time()
print "Время выполнения работы:", stop_time-start_time, "секунд"
dsp.write(create_string(0.5, 15000))
dsp.close()
print "Звук отключён, запись результата"
result = writer.get_result()
print "Результат получен"
negs = 0
poss = 0
for sample in result:
if sample[1] == 1:
poss += 1
else:
negs += 1
print poss, "записей со звуком и", negs, "без"
data = open("nia.data", mode="write")
print "Файл для результата открыт"
data.write("%d %d %d\n" % ( len(result), len(result[0][0]), 1 ))
random.Random().shuffle(result)
for sample in result:
[inputs, output] = sample
in_str = ""
for inp in inputs:
in_str += (str(inp) + ' ')
in_str = in_str[:-1] + '\n'
data.write(in_str)
data.write(str(output) + '\n')
print "Результат записан"
data.close
print "Выход"
if __name__ == "__main__":
main()
|
|
О мыслях и способах их выражения |
|
|
О категории D |
|
|