Comments (12)
Hey, I would suggest to either downgrade Python or try to play around with scikit-learn
version in requirements.txt
, see scikit-learn-contrib/hdbscan#457 for reference. I hope, that helps 🤞
from deepswarm.
After I had solved the problem, ran the example -----> cifar10.py, and get following error:
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
170500096/170498071 [==============================] - 78s 0us/step
-------------------------------DeepSwarm settings-------------------------------
{
"DeepSwarm": {
"aco": {
"ant_count": 16,
"greediness": 0.5,
"pheromone": {
"decay": 0.1,
"evaporation": 0.1,
"start": 0.1,
"verbose": false
}
},
"backend": {
"batch_size": 64,
"epochs": 15,
"loss": "sparse_categorical_crossentropy",
"patience": 5,
"verbose": false
},
"flat_nodes": [
"FlattenNode",
"DenseNode",
"DropoutFlatNode",
"BatchNormalizationFlatNode"
],
"max_depth": 15,
"metrics": "accuracy",
"reuse_patience": 1,
"save_folder": null,
"spatial_nodes": [
"InputNode",
"Conv2DNode",
"DropoutSpatialNode",
"BatchNormalizationNode",
"Pool2DNode"
]
},
"Nodes": {
"BatchNormalizationFlatNode": {
"attributes": {},
"transitions": {
"DenseNode": 1.1,
"DropoutFlatNode": 1.1,
"OutputNode": 0.9
},
"type": "BatchNormalization"
},
"BatchNormalizationNode": {
"attributes": {},
"transitions": {
"Conv2DNode": 1.1,
"DropoutSpatialNode": 1.0,
"FlattenNode": 1.0,
"Pool2DNode": 1.1
},
"type": "BatchNormalization"
},
"Conv2DNode": {
"attributes": {
"activation": [
"ReLU"
],
"filter_count": [
32,
64,
128
],
"kernel_size": [
1,
3,
5
]
},
"transitions": {
"BatchNormalizationNode": 1.2,
"Conv2DNode": 0.8,
"DropoutSpatialNode": 1.1,
"FlattenNode": 1.0,
"Pool2DNode": 1.2
},
"type": "Conv2D"
},
"DenseNode": {
"attributes": {
"activation": [
"ReLU",
"Sigmoid"
],
"output_size": [
64,
128
]
},
"transitions": {
"BatchNormalizationFlatNode": 1.2,
"DenseNode": 0.8,
"DropoutFlatNode": 1.2,
"OutputNode": 1.0
},
"type": "Dense"
},
"DropoutFlatNode": {
"attributes": {
"rate": [
0.1,
0.3
]
},
"transitions": {
"BatchNormalizationFlatNode": 1.0,
"DenseNode": 1.0,
"OutputNode": 0.9
},
"type": "Dropout"
},
"DropoutSpatialNode": {
"attributes": {
"rate": [
0.1,
0.3
]
},
"transitions": {
"BatchNormalizationNode": 1.1,
"Conv2DNode": 1.1,
"FlattenNode": 1.0,
"Pool2DNode": 1.0
},
"type": "Dropout"
},
"FlattenNode": {
"attributes": {},
"transitions": {
"BatchNormalizationFlatNode": 0.9,
"DenseNode": 1.0,
"OutputNode": 0.8
},
"type": "Flatten"
},
"InputNode": {
"attributes": {
"shape": [
[
28,
28,
1
]
]
},
"transitions": {
"Conv2DNode": 1.0
},
"type": "Input"
},
"OutputNode": {
"attributes": {
"activation": [
"Softmax"
],
"output_size": [
10
]
},
"transitions": {},
"type": "Output"
},
"Pool2DNode": {
"attributes": {
"pool_size": [
2
],
"pool_type": [
"max",
"average"
],
"stride": [
2,
3
]
},
"transitions": {
"BatchNormalizationNode": 1.1,
"Conv2DNode": 1.1,
"FlattenNode": 1.0
},
"type": "Pool2D"
}
},
"script": "ipykernel_launcher.py",
"settings_file": "C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\DeepSwarm-master\settings\default.yaml"
}
------------------------------STARTING ACO SEARCH-------------------------------
ValueError Traceback (most recent call last)
in
24 deepswarm = DeepSwarm(backend=backend)
25 # Find the topology for a given dataset
---> 26 topology = deepswarm.find_topology()
27 # Evaluate discovered topology
28 deepswarm.evaluate_topology(topology)
~\AppData\Local\Programs\Python\Python38\Scripts\DeepSwarm-master\deepswarm\deepswarm.py in find_topology(self)
43 self.aco = ACO(backend=self.backend, storage=self.storage)
44
---> 45 best_ant = self.aco.search()
46 best_model = self.storage.load_specified_model(self.backend, best_ant.path_hash)
47 return best_model
~\AppData\Local\Programs\Python\Python38\Scripts\DeepSwarm-master\deepswarm\aco.py in search(self)
30 Log.header("STARTING ACO SEARCH", type="GREEN")
31 self.best_ant = Ant(self.graph.generate_path(self.random_select))
---> 32 self.best_ant.evaluate(self.backend, self.storage)
33 Log.info(self.best_ant)
34 else:
~\AppData\Local\Programs\Python\Python38\Scripts\DeepSwarm-master\deepswarm\aco.py in evaluate(self, backend, storage)
248
249 # Train model
--> 250 new_model = backend.train_model(new_model)
251 # Evaluate model
252 self.loss, self.accuracy = backend.evaluate_model(new_model)
~\AppData\Local\Programs\Python\Python38\Scripts\DeepSwarm-master\deepswarm\backends.py in train_model(self, model)
270
271 # Train model
--> 272 model.fit(**fit_parameters)
273
274 # Load model from checkpoint
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
1098 _r=1):
1099 callbacks.on_train_batch_begin(step)
-> 1100 tmp_logs = self.train_function(iterator)
1101 if data_handler.should_sync:
1102 context.async_wait()
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\def_function.py in call(self, *args, **kwds)
826 tracing_count = self.experimental_get_tracing_count()
827 with trace.Trace(self._name) as tm:
--> 828 result = self._call(*args, **kwds)
829 compiler = "xla" if self._experimental_compile else "nonXla"
830 new_tracing_count = self.experimental_get_tracing_count()
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\def_function.py in _call(self, *args, **kwds)
869 # This is the first call of call, so we have to initialize.
870 initializers = []
--> 871 self._initialize(args, kwds, add_initializers_to=initializers)
872 finally:
873 # At this point we know that the initialization is complete (or less
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\def_function.py in _initialize(self, args, kwds, add_initializers_to)
723 self._graph_deleter = FunctionDeleter(self._lifted_initializer_graph)
724 self._concrete_stateful_fn = (
--> 725 self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access
726 *args, **kwds))
727
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs)
2967 args, kwargs = None, None
2968 with self._lock:
-> 2969 graph_function, _ = self._maybe_define_function(args, kwargs)
2970 return graph_function
2971
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\function.py in _maybe_define_function(self, args, kwargs)
3359
3360 self._function_cache.missed.add(call_context_key)
-> 3361 graph_function = self._create_graph_function(args, kwargs)
3362 self._function_cache.primary[cache_key] = graph_function
3363
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes)
3194 arg_names = base_arg_names + missing_arg_names
3195 graph_function = ConcreteFunction(
-> 3196 func_graph_module.func_graph_from_py_func(
3197 self._name,
3198 self._python_function,
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\framework\func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)
988 _, original_func = tf_decorator.unwrap(python_func)
989
--> 990 func_outputs = python_func(*func_args, **func_kwargs)
991
992 # invariant: func_outputs
contains only Tensors, CompositeTensors,
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\eager\def_function.py in wrapped_fn(*args, **kwds)
632 xla_context.Exit()
633 else:
--> 634 out = weak_wrapped_fn().wrapped(*args, **kwds)
635 return out
636
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\framework\func_graph.py in wrapper(*args, **kwargs)
975 except Exception as e: # pylint:disable=broad-except
976 if hasattr(e, "ag_error_metadata"):
--> 977 raise e.ag_error_metadata.to_exception(e)
978 else:
979 raise
ValueError: in user code:
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\training.py:805 train_function *
return step_function(self, iterator)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\training.py:795 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1259 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2730 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:3417 _call_for_each_replica
return fn(*args, **kwargs)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\training.py:788 run_step **
outputs = model.train_step(data)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\training.py:754 train_step
y_pred = self(x, training=True)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\base_layer.py:998 __call__
input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)
C:\Users\USER\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\input_spec.py:271 assert_input_compatibility
raise ValueError('Input ' + str(input_index) +
ValueError: Input 0 is incompatible with layer model: expected shape=(None, 28, 28, 1), found shape=(None, 32, 32, 3)
from deepswarm.
You should be using cifar10 settings file. Currently you are running cifar10 example with default.yaml
. Input shape for cifar10 should be [!!python/tuple [32, 32, 3]]
from deepswarm.
I changed to version 3.6 of python, but it doesn't work again.
ValueError Traceback (most recent call last)
in
24 deepswarm = DeepSwarm(backend=backend)
25 # Find the topology for a given dataset
---> 26 topology = deepswarm.find_topology()
27 # Evaluate discovered topology
28 deepswarm.evaluate_topology(topology)
~\Desktop\DeepSwarm-master\deepswarm\deepswarm.py in find_topology(self)
43 self.aco = ACO(backend=self.backend, storage=self.storage)
44
---> 45 best_ant = self.aco.search()
46 best_model = self.storage.load_specified_model(self.backend, best_ant.path_hash)
47 return best_model
~\Desktop\DeepSwarm-master\deepswarm\aco.py in search(self)
37 while self.graph.current_depth <= cfg['max_depth']:
38 Log.header("Current search depth is %i" % self.graph.current_depth, type="GREEN")
---> 39 ants = self.generate_ants()
40
41 # Sort ants using user selected metric
~\Desktop\DeepSwarm-master\deepswarm\aco.py in generate_ants(self)
76 ant.path = self.graph.generate_path(self.aco_select)
77 # Evaluate how good is the new path
---> 78 ant.evaluate(self.backend, self.storage)
79 ants.append(ant)
80 Log.info(ant)
~\Desktop\DeepSwarm-master\deepswarm\aco.py in evaluate(self, backend, storage)
242 if existing_model is None:
243 # Generate model
--> 244 new_model = backend.generate_model(self.path)
245 else:
246 # Re-use model
~\Desktop\DeepSwarm-master\deepswarm\backends.py in generate_model(self, path)
142
143 # Return generated model
--> 144 model = tf.keras.Model(inputs=input_layer, outputs=layer)
145 self.compile_model(model)
146 return model
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\training\tracking\base.py in _method_wrapper(self, *args, **kwargs)
515 self._self_setattr_tracking = False # pylint: disable=protected-access
516 try:
--> 517 result = method(self, *args, **kwargs)
518 finally:
519 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\functional.py in init(self, inputs, outputs, name, trainable, **kwargs)
118 generic_utils.validate_kwargs(kwargs, {})
119 super(Functional, self).init(name=name, trainable=trainable)
--> 120 self._init_graph_network(inputs, outputs)
121
122 @trackable.no_automatic_dependency_tracking
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\training\tracking\base.py in _method_wrapper(self, *args, **kwargs)
515 self._self_setattr_tracking = False # pylint: disable=protected-access
516 try:
--> 517 result = method(self, *args, **kwargs)
518 finally:
519 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\functional.py in _init_graph_network(self, inputs, outputs)
201
202 # Keep track of the network's nodes and layers.
--> 203 nodes, nodes_by_depth, layers, _ = _map_graph_network(
204 self.inputs, self.outputs)
205 self._network_nodes = nodes
~\AppData\Local\Programs\Python\Python38\Scripts\tf2-gpu\lib\site-packages\tensorflow\python\keras\engine\functional.py in _map_graph_network(inputs, outputs)
998 for name in all_names:
999 if all_names.count(name) != 1:
-> 1000 raise ValueError('The name "' + name + '" is used ' +
1001 str(all_names.count(name)) + ' times in the model. '
1002 'All layer names should be unique.')
ValueError: The name "1617975030.9342244" is used 2 times in the model. All layer names should be unique.
from deepswarm.
What configuration you are using and are you running test example?
from deepswarm.
Yes, I am running the test example - cifar10
My configuration:
python: 3.6.8
tensorflow:.13.1
scikit-learn:0.20.3
numpy:1.19.5
colorama:0.4.1
Thank you so much for your help!
from deepswarm.
Hmm it's weird it seems that few layers were created at the exact same time. Did you change anything in .yaml
config file? As a quick fix you can open backends.py
and change
parameters = {'name': str(time.time())}
to
parameters = {'name': str(uuid.uuid4())}
from deepswarm.
No, I didn't change anything. And I try your suggestion that change:
parameters = {'name': str(time.time())}
to
parameters = {'name': str(uuid.uuid4())}
but it didn't work.
ValueError: The name "1618915107.6525285" is used 2 times in the model. All layer names should be unique.
------------------------------STARTING ACO SEARCH-------------------------------
------------------------------STARTING ACO SEARCH-------------------------------
Ant: 0x23ec6fce198
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:256, kernel_size:5, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 379ca2a5fe67b9b672cceea03a5c7547dcc60ab92c65474c264f8c318fd122b7
=======
Ant: 0x23ec6fce198
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:256, kernel_size:5, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 379ca2a5fe67b9b672cceea03a5c7547dcc60ab92c65474c264f8c318fd122b7
---------------------------Current search depth is 1----------------------------
---------------------------Current search depth is 1----------------------------
--------------------------------GENERATING ANT 1--------------------------------
--------------------------------GENERATING ANT 1--------------------------------
Ant: 0x23ec759a550
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:256, kernel_size:1, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 05db29859484c06781891dfaff8ada2e0c0ed5e5b17d58d4b2c3b9bd17a4799f
=======
Ant: 0x23ec759a550
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:256, kernel_size:1, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 05db29859484c06781891dfaff8ada2e0c0ed5e5b17d58d4b2c3b9bd17a4799f
--------------------------------GENERATING ANT 2--------------------------------
--------------------------------GENERATING ANT 2--------------------------------
Ant: 0x23eb8f0abe0
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:128, kernel_size:1, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 798a3f7ee91b9cb0b7d5478c63a06007643c702a44f24c69f7d400b032c2b0ba
=======
Ant: 0x23eb8f0abe0
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:128, kernel_size:1, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 798a3f7ee91b9cb0b7d5478c63a06007643c702a44f24c69f7d400b032c2b0ba
--------------------------------GENERATING ANT 3--------------------------------
--------------------------------GENERATING ANT 3--------------------------------
Ant: 0x23ec8cf0470
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:64, kernel_size:1, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: ebe0ed98f850445b751b8368068efeb5c3b27f3b5c8b88ae5553ac81daf31a8e
=======
Ant: 0x23ec8cf0470
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:64, kernel_size:1, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: ebe0ed98f850445b751b8368068efeb5c3b27f3b5c8b88ae5553ac81daf31a8e
--------------------------------GENERATING ANT 4--------------------------------
--------------------------------GENERATING ANT 4--------------------------------
Ant: 0x23eb902d9e8
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:64, kernel_size:3, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 78ac2dbb4781a729435be2ef23f54c34d34344dd8db21c78c64afd10ffcd929f
=======
Ant: 0x23eb902d9e8
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:64, kernel_size:3, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 78ac2dbb4781a729435be2ef23f54c34d34344dd8db21c78c64afd10ffcd929f
--------------------------------GENERATING ANT 5--------------------------------
--------------------------------GENERATING ANT 5--------------------------------
Ant: 0x23ec88cfbe0
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:128, kernel_size:5, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 28f75dc576370825f7420103b23c4de54624b85fb7260837199bde2c5ef120ec
=======
Ant: 0x23ec88cfbe0
Loss: 14.506286
Accuracy: 0.100000
Path: InputNode(shape:(32, 32, 3)) -> Conv2DNode(filter_count:128, kernel_size:5, activation:ReLU) -> FlattenNode() -> OutputNode(output_size:10, activation:Softmax)
Hash: 28f75dc576370825f7420103b23c4de54624b85fb7260837199bde2c5ef120ec
--------------------------------GENERATING ANT 6--------------------------------
--------------------------------GENERATING ANT 6--------------------------------
from deepswarm.
I'm not sure if this is the reason. I run the program in jupyter notebook. Cause it is easy to debug for me.
from deepswarm.
How did you install DeepSwarm
?
from deepswarm.
I install DeepSwarm in Command prompt.
from deepswarm.
Sorry I was busy with other life stuff, does the problem still occur?
from deepswarm.
Related Issues (10)
- Readme should indicate this work only in python 3.6 and greater HOT 2
- Pytorch implementation HOT 1
- learning rate HOT 2
- Error after generating ant 1 HOT 6
- builtins.NotImplementedError: numpy() is only available when eager execution is enabled. HOT 4
- Out of memory when saving object HOT 9
- [feature request] Add new evaluate_model function which can return a more generalized metric HOT 3
- Is "SPMT" spearmint? HOT 1
- 1D Option? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from deepswarm.