Quote from AlukSky »
EDIT: Talcos, if you're still doing the style transfer thing (and it isn't much of a chore to do so), could you try this forest as a mix of these artworks (1, 2, 3)?
Sure. Not tonight, don't have access to the servers. But I will tomorrow morning!
Sorry that it took me so long to reply to you. I had back-to-back research journal submission deadlines. I just put out about 100 double-spaced-pages worth of material and now I get to wait to hear back from the review committees to see whether they like my findings. I'm hopeful that they will.
And I'll hopefully have some neural-storyteller-related results to share soon. That should be amusing.
---
Also, YeGoblynQueenne, I love the results. Keep up the good work! I look forward to seeing more from you. Let me know if there's anything I can do to help.
And Mustard_Fountain, thanks for sharing!
EDIT: AlukSky, I uploaded the results that I got. I might be able to improve upon them further with some fine-tuning of the parameters. In particular, I think the Erin Hanson version could look even better with some work.
EDIT(1): I believe that I've identified the issues that are keeping me from getting neural-storyteller working. I sent out an e-mail to someone who can resolve those issues for me.
2
In the meantime, I should point out that the proper way to handle data is as card objects rather than text streams, and if you already have card objects then invoking the pretty formatting logic that decode.py uses is as simple as looping over the cards and having each one invoke its format() method with the right arguments. sortcards.py is a terrible example here, as it was written before card objects existed, so it isn't taking advantage of any of the modern infrastructure. I'd at least look at scripts/summarize.py, and how the indices are set up in lib/datalib.py, if you want an idea of how the infrastructure is supposed to work.
4
First, have you taken a look at Magic Set Editor 2? Using the -mse flag for decode.py to produce an mse-set file and the viewing it with MSE2 is pretty comfortable for looking at dumps, and it has some basic statistics and the ability to sort things if you're interested in a particular subset.
Second, I'm officially on the books to do a project on this work for my machine learning class (the prof apparently though text generation was so interesting a topic that he added karpathy's original blog post to the list of suggested projects after I emailed him my proposal) so I'll be putting a lot of effort into doing analysis of the output. And any generally useful code will be pushed to github.
3
Anyway, once that's implemented moving buyback and rebound around would be only a few lines of code, so you might want to hold off on hacking that for a few days.
Edit: and apparently I have a magical ability to always be the first poster on a new page, haha.
1
Is there anything strange going on with the path/environment or shell that's being used to run the script?
2
As a little side note, you can use a [code] tag inside the [spoiler] tag to put the text dumps in a monospace code font so the text tables retain their columns.
Haha, working as intended. I'll have some real analytics scripts put up on the github at some point. And if you end up writing some code yourself, I'm happy to look at it add it to the currently almost empty set of tools in the scripts/ directory.
2
Duplicating cards in the input isn't a great idea, because the input file is the wrong place to duplicate the cards. What you really want to do is rerandomize the things that should be random for each training epoch, and possibly again each time you run the validation numbers, though that's a lot less important and of debatable value anyway.
Fortunately, the custom batcher for mtg-rnn does exactly this for you. In fact, if you give it the --randomize-mana option, it will randomize the order of the mana symbols in each cost used for training, so every single one will be unique and different from the same cost in other epochs, even if you didn't randomize the input file at all. You can go comb through the readmes if you want more detail on exactly how it works and what the rationale is.
Anyway, I should update things. The big items on my list are to regenerate the training data with the new BFZ cards (though I assume plenty of others have already done that) and see if there's any new updates from karpathy that I need to integrate into mtg-rnn. I have some work already done on a new version of the format that's probably better, but I don't want to push that out too quickly and break code people are using.
1
There are a few new 15MB MSE2 set files in this folder that I just recovered a few days ago after regaining access to one of my machines. They were generated with randomly ordered fields, so a lot of the cards will be a little messed up, but there's probably some interesting stuff in there as well.
1
Indeed, the code in the mtg-rnn repo will only work for input that shares certain key properties with text that looks like the encoding produced by mtgencode.
Specifically, mtg-rnn has a specialized batcher that tries to break the input up into a series of cards, and then randomize them across epochs so that as little information as possible is lost due to chopping into training batches. The effect hasn't been experimentally validated, but it works at least as well as the original and the idea seems reasonable, no? In any case, you could still use it for hearthstone cards if you structure the input in the right way. You would have to separate cards with pairs of newline characters, and not have longer sequences of newlines anywhere (though single newlines inside cards are fine). If you do that it should just work. If you separate fields within the cards with vertical bar | characters, you could use the randomize_fields option as well, just like for magic cards.
The output is pretty verbose, so you should have a good idea of how it's working. If you want to use it and run into any issues, feel free to post an issue on the github. I don't have access to any of my machines right now but I will starting next week.
1
My internship just ended, so I'll be spending this week moving home. Once I'm back in the lab, I'm hoping to upgrade my Intel machine with a new GPU, and it would be nice to have something to run on it.
1
Congrats! You're officially a better Torch7 hacker than I am.
I'm currently working on some improvements to the format, along the lines of this post. I'm collaborating with a friend to try and do some statistical analysis on the output to see if we can guide training parameters to something approaching optimal. Currently using R with RStudio, but I can easily convert the same data to arff format for weka. I'll provide info as things progress.